php经典设计模式和Trait类代码的复用

PHP经典设计模式

<?php /** * 单例模式 */ class Site { #定义属性 public $siteName; #定义本类的静态实例 protected static $instance=null; #禁用构造方法 private function __construct($siteName) { #初始化$siteName属性 $this->siteName=$siteName; } #获取本类的唯一实例 public static function getInstance($siteName="我是本类的唯一实例") { #检测$instance属性是否属于本类 if (!self::$instance instanceof self){ self::$instance=new self($siteName); } return self::$instance; } } /** *用工厂模式生成本类的单一实例 */ class Factory { #创建指定类的实例 public static function create() { return Site::getInstance("我是传入的字符"); } } /** * 对象注册树,注册模式 * 1、注册:set(),把对象放树上 * 2、获取:get(),把对象取下来使用 * 3、注销:_unset(),把对象注销 */ class Register { #创建对象池,数组存储 protected static $objects=[]; #生成对象并挂树上 public static function set($alias,$object) { self::$objects[$alias]=$object; } #从树上取下对象 public static function get($alias) { return self::$objects[$alias]; } #把对象从树上注销 public static function _unset($alias) { unset(self::$objects[$alias]); } } #将Site类的实例挂树上去,放到对象池 Register::set('site',Factory::create()); #从树上取下对象 $obj=Register::get('site'); #查看一下该对象 var_dump($obj); echo"<hr>"; echo $obj->siteName; ?>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwjdj.html