zoukankan      html  css  js  c++  java
  • PHP经典设计模式

    <?php
    /**
    * 单例模式
    */
    class Site
    {
    public $siteName;
    //静态实例
    protected static $instance=null;
    //禁用构造器
    private function __construct($siteName)
    {
    $this->siteName=$siteName;
    }
    //获取本例唯一实例
    public static function getInstance($siteName='微语录')
    {
    if(!self::$instance instanceof self){
    self::$instance = new self($siteName);
    }
    return self::$instance;
    }
    }
     
    /**
    * 用工厂模式生成单一实例
    */
    class Factory
    {
    public static function create($iteam='www.top789.cn')
    {
    return Site::getInstance($iteam);
    }
    }
     
    /**
    * 对象注册树
    * 1. 注册set()把对象挂上树
    * 2. 获取get()把对象取下来
    * 3. 注销_unset()把对象吃掉
    */
    class Register
    {
    protected static $objects=[];
    public static function set($key,$object)
    {
    self::$objects[$key]=$object;
    }
    public static function get($key)
    {
    return self::$objects[$key];
    }
    public static function _unset($key)
    {
    unset(self::$objects[$key]);
    }
    }
     
    //使用
    Register::set('sitetemp',Factory::create('测试'));
    $obj=Register::get('sitetemp');
    var_dump($obj);
    echo $obj->siteName;
  • 相关阅读:
    python函数
    python文件IO操作
    LAMP项目上线
    linux下的小工具
    linux下自有服务
    Lesson_Swift2
    枚举
    使用文件流下载附件
    Global中的Timer计时器
    IE11下的NPOI导出提示__doPostBack未定义解决方案
  • 原文地址:https://www.cnblogs.com/samphp/p/8576060.html
Copyright © 2011-2022 走看看