美文网首页
工厂模式+单例模式+注册模式联合实例

工厂模式+单例模式+注册模式联合实例

作者: f09037cb27f7 | 来源:发表于2020-02-28 17:18 被阅读0次

    单例模式解决的是如何在整个项目中创建唯一对象实例的问题,工厂模式解决的是如何不通过new建立实例对象的方法。
    单例模式可以换成数据库类,数据库类再扩展做成 “适配器模式”

    <?php
    //创建单例
    class Single{
        public $hash;
        static protected $ins=null;
        final protected function __construct(){
            $this->hash=rand(1,9999);
        }
    
        static public function getInstance(){
            if (self::$ins instanceof self) {
                return self::$ins;
            }
            self::$ins=new self();
            return self::$ins;
        } 
    }
    
    //工厂模式
    class RandFactory{
        public static function factory(){
            return Single::getInstance();
        }
    }
    
    //注册树
    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]);
        }
    }
    
    Register::set('rand',RandFactory::factory());
    
    $object=Register::get('rand');
    
    print_r($object);
    

    相关文章

      网友评论

          本文标题:工厂模式+单例模式+注册模式联合实例

          本文链接:https://www.haomeiwen.com/subject/xodfhhtx.html