php几种设计模式

时间:2021-02-23 14:14:02   收藏:0   阅读:0
    class SingletonOne
    {
        private static $singletonOne = null;
    
        public function ok()
        {
            echo ‘ok‘;
        }
    
        public static function getInstance(){
            if (self::$singletonOne == null){
                self::$singletonOne = new self();
            }
            return self::$singletonOne;
        }
    }
    SingletonOne::getInstance()->ok();
    

单例模式只实例化一次,但是面试有被问到,A通过单例模式连接数据库,然后B也通过单例模式连接数据库。他们之间只实例化了一次还是?深信服和明源云遇到过。。

    spl_autoload_register(‘auto‘);
    
    function auto($class)
    {
        require $class.‘.php‘;
    }
    $new = new Dog();
    $new->create(‘米莉‘);
	
    class Dog
    {
        public function create($str = ‘‘){
            echo ‘创建一条叫‘.$str.‘狗‘;
        }
    }
	
    class Car
    {
        public function create($str = ‘‘){
            echo ‘制造一辆叫‘.$str.‘车‘;
        }
	}
	
`spl_autoload_register队列加载,__autoload只加载一次,上次明源云有问到`

    include ‘Car.php‘;
    class Register
    {
        protected static $obj = [];
        const LOGGER = ‘logger‘;
    
        /**
         * 挂载对象到全局树
         * @param $alias
         * @param $obj
         */
        public static function set($alias, $obj)
        {
            self::$obj[$alias] = $obj;
        }
    
        /**
         * 获取注册树对象
         * @param string $name
         * @return mixed
         */
        public static function get($name = ‘‘)
        {
            return self::$obj[$name];
        }
    
        /**
         * 销毁
         * @param $name
         */
        function __unset($name)
        {
            unset(self::$obj[$name]);
        }
    
    
    }
    Register::set(Register::LOGGER,new Car());
    $dog = Register::get(Register::LOGGER);
    print_r($dog->create(‘a‘));
    ```
    
`应用中经常使用的对象创建一个中央存储器来存放这些对象`
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!