摘要:单例模式总结 单例模式就是一个类仅允许实例化一次,禁用clone方法和new方法(构造器) 也就是将这两个方法给类的私有化,不允许外部访问,然后创建一个静态受保护方法,来保存类的唯一实例,然后创建一个静态的方法提供接口,该方法创建并返回当前类的唯一实例.从而保证类仅允许实例化一次, &
单例模式总结
单例模式就是一个类仅允许实例化一次,禁用clone方法和new方法(构造器)
也就是将这两个方法给类的私有化,不允许外部访问,然后创建一个静态受保护方法,来保存类的唯一实例,然后创建一个静态的方法提供接口,该方法创建并返回当前类的唯一实例.从而保证类仅允许实例化一次,
如下面代码
//创建一个类Once class Once { //私有化构造方法和克隆方法防止外部访问,和子类访问 private function __construct(){} //私有化构造器 private function __clone(){} //私有化clone方法 //创建一个类的静态受保护属性 protected $instance = null; //保存唯一实例 //创建对外部的静态方法,返回唯一实例 public static function getInstance() { //如果类内部的保存唯一实例的属性是空的话,则创建唯一实例,并返回,如果有值则直接返回 if(is_null(static::$instance)){ static::$instance = new static(); //谁调用我,我就是谁 } return static::$instance; } } //在外部测试是否只实例化了一次类 /从外部实例化Hubby类 $hubby1 = Hubby::getInsetance(); //调用静态方法接口创建实例 $hubby2 = Hubby::getInsetance(); echo ($hubby1 instanceof Hubby) ? '是' : '不是'; //是 echo '<br>'; echo ($hubby2 instanceof Hubby) ? '是' : '不是'; //是 echo '<br>'; echo ($hubby1 === $hubby2) ? '完全相等' : '不相等'; //完全相等 echo '<br>'; var_dump($hubby1,$hubby2);
批改老师:韦小宝批改时间:2018-12-12 14:44:51
老师总结:总结的没有毛病!一直写的都很不错!设计模式还是很重要的!一定要多练习!