PHP设计模式之单例模式

单例设计模式通常包含以下三点:

· 一个私有的 构造方法;(确保用户无法通过创建对象对其进行实例化)

· 一个公有的 静态的 方法;(负责对其本身进行实例化)

· 一个私有的 静态的 属性;(用于保存仅有的一个实例化对象)

PHP设计模式之单例模式_第1张图片
书中自有颜如玉,书中自有黄金屋

基本的单例的示例代码:

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类的对象

PHP设计模式之单例模式_第2张图片
书中自有颜如玉,书中自有黄金屋

        所谓的单例设计模式就是一个类只能产生/创建唯一一个对象。

        要编写单态设计模式,就必须让一个类只能实例化一个对象,而要想让一个类只能实例化一个对象,就要先让一个类不能实例化对象。

PHP设计模式之单例模式_第3张图片
书中自有颜如玉,书中自有黄金屋

如果需要多次用到单例可如下所示

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类的对象

        加强版的单例用法示例

PHP设计模式之单例模式_第4张图片
书中自有颜如玉,书中自有黄金屋

        图片与文章无关,在阅读技术文档的时候欣赏一下美女也是一个不错的选择,希望可以对你有帮助,如果有错误的地方欢迎指正。

你可能感兴趣的:(PHP设计模式之单例模式)