PHP经典设计模式 单例模式 工厂模式 注册树 对象池

  • 2,107
  • 阅读模式
<?php
class Site
{
  //属性
  public $siteName;
  //本类的的静态实例
  protected static $ins = null;
  private function __construct($siteName){
    $this->siteName = $siteName;
  }
  public static function getInstance($siteName = '筋斗云网络'){
    //判断静态属性是不是当前的实例 不是 去创建自身实例
    if(!self::$ins instanceof self){
      self::$ins = new self($siteName);
    }
    //已经是本例实例 return
    return self::$ins;
  }

}
//用工厂模式来创建本类的单一实例
class Factory
{
  public static function create(){
    return Site::getInstance('www.php.cn.com');
  }
}

/**
 * Class Register
 * 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];
  }
  //注销:_unset(),把对象吃掉!【销毁对象】
  public static function _unset($alias){
    unset(self::$objects[$alias]);
  }
}
Register::set('site',Factory::create());//site对象  hello也可以 名字自己定
$site = Register::get('site');
var_dump($site->siteName);

weinxin
我的微信
这是我的微信扫一扫
开拓者博主
  • 本文由 发表于 2020年1月5日09:21:09
  • 转载请务必保留本文链接:https://www.150643.com/533.html
评论:1   其中:访客  1   博主  0
    • naty
      naty 3

      提供拼多多发空包 京东单号有底单、内网www.88danhw.com

    匿名

    发表评论

    匿名网友 填写信息