php设计模式之单例模式使用示例
以下为单例模式代码
<?php
class EasyFramework_Easy_Mysql{
protected static $_instance = null;
private function __construct(){
}
public static function getInstance(){
if (self::$_instance === null){
self::$_instance = new self();
}
return self::$_instance;
}
protected function __clone(){
}
}
$x = EasyFramework_Easy_Mysql::getInstance();
var_dump($x);
?>
/
1.第一步
既然是单例,也就是只能实例化一次,也就代表在实例化时
不可能使用new关键字!!!!
在使用new关键字时,类中的构造函数将自动调用。
,如果我们将构造函数的访问控制符设置为protected或private
那么就不可能直接使用new关键字了!!!
第二步
无论protected/private修饰的属性或方法,请问在当前类的
内部是否可以访问?---> 可以
第三步
现在我们根本没有办法得到对象(因为你不能使用new关键字了),
第四步静态成员(包括属性或方法)在访问时,只能通过
类名称::属性()
类名称::方法()
第五步如果我现在存在一个静态方法--> getInstance()
那么在调用时就应写成
$object = EasyFramework_Easy_Mysql::getInstance()
如果,getInstance()方法可以得到唯一的一个对象
也就代表是所谓的单例模式了!!!
第六步,怎么让getInstace()只得到一个对象呢?
既然要得到对象,那么肯定是
$variabl = new ????();
我们又知道静态属性的值是可以所有的对象来继承的!!!
静态成员是属于类的,而非对象的!
所以
第七步声明一个静态的属性,用其存储实例化的对象
protectd static $_instance
并且初始值为null
那么我在调用getInstance()方法时,只需要判断其值是否为空即可\
public static function getInstance(){
if(self::_instance === null){
self::_instance = new self();
}
return self::_instance;
}
在实例时,一定是这样写
$x = EasyFramework_Easy_Mysql::getInstance();
在第一时调用时,类的$_instance这个静态属性值为null,
那么也就代表,getInstance()方法的判断条件为真了,
也就意味着
self::$_instance这个成员有了值了!!!
并且还返回这个值
$y = EasyFramework_Easy_Mysql::getInstance();
在第二次或第N次调用时,self::$_instance已经有了值了
也就代表getInstance()方法的条件为假了!!!
也就代表其中的程序代表不可能执行了!!!
也就代表将直接返回以前的值了!!!
/
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程