美文网首页
PHP设计模式之单例模式

PHP设计模式之单例模式

作者: flamez57 | 来源:发表于2018-04-06 00:45 被阅读0次

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

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

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

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

    书中自有颜如玉,书中自有黄金屋

    基本的单例的示例代码:

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

            加强版的单例用法示例

    书中自有颜如玉,书中自有黄金屋

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

    相关文章

      网友评论

          本文标题:PHP设计模式之单例模式

          本文链接:https://www.haomeiwen.com/subject/fzhjhftx.html