单例设计模式通常包含以下三点:
· 一个私有的 构造方法;(确保用户无法通过创建对象对其进行实例化)
· 一个公有的 静态的 方法;(负责对其本身进行实例化)
· 一个私有的 静态的 属性;(用于保存仅有的一个实例化对象)
书中自有颜如玉,书中自有黄金屋基本的单例的示例代码:
class singleExp{
//用于保存仅有的一个实例化对象
private static $Instance=NULL;
//构造方法 使用private 封装后 则只能在类的内部使用new去创建对象
private function __construct(){};
//只有通过这个方法才能返回本类中的对象,该方法是静态方法 用类名调用
public static getInstance(){
if(self::$Instance instanceof self){ //如果本类中的$Instance为空,说明还没有被实例化过
self::$Instance=new singleExp(); //实例化本对象
}
return self::$Instance;
}
}
$instance=singleExp::getInstance(); //只能使用静态方法getInstance()去获取singleTon类的对象
书中自有颜如玉,书中自有黄金屋所谓的单例设计模式就是一个类只能产生/创建唯一一个对象。
要编写单态设计模式,就必须让一个类只能实例化一个对象,而要想让一个类只能实例化一个对象,就要先让一个类不能实例化对象。
书中自有颜如玉,书中自有黄金屋如果需要多次用到单例可如下所示
class singleExp{
//用于保存仅有的一个实例化对象
private static $Instance=NULL;
//构造方法 使用private 封装后 则只能在类的内部使用new去创建对象
private function __construct(){};
//只有通过这个方法才能返回本类中的对象,该方法是静态方法 用类名调用
public static getInstance(){
$class = get_called_class();
if(self::$Instance instanceof self){ //如果本类中的$Instance为空,说明还没有被实例化过
self::$Instance[$class]=new singleExp(); //实例化本对象
}
return self::$Instance[$class];
}
}
$instance=singleExp::getInstance(); //只能使用静态方法getInstance()去获取singleTon类的对象
加强版的单例用法示例
书中自有颜如玉,书中自有黄金屋图片与文章无关,在阅读技术文档的时候欣赏一下美女也是一个不错的选择,希望可以对你有帮助,如果有错误的地方欢迎指正。
网友评论