PHP设计模式之单例模式

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

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

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

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

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

基本的单例的示例代码:

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

        加强版的单例用法示例

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 本文主要参考 那些年,我们一起写过的“单例模式”。 何为单例模式? 顾名思义,单例模式就是保证一个类仅有一个...
    tandeneck阅读 2,549评论 1 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 单例模式的作用是在多次调用对象创建实例的时候,返回最初创建的实例,而不是每次创建新的实例。 比如在创建一个DB实例...
    守望星空l阅读 270评论 0 1
  • 单例设计模式所解决的问题就是:保证类的对象在内存中唯一。 举例: A、B类都想要操作配置文件信息Config.ja...
    飞天_shine阅读 257评论 0 0
  • 迷雾渐失来路,不知青鸟归处。桥边倚栏人,望断西沉日暮。何故?何故?心头相思长驻。
    我是CC阅读 222评论 0 2