php几种设计模式

2021-03-01 08:26

阅读:348

标签:require   dog   ali   单例   auto   类实例化   include   protected   prot   

  • 创建型-单例模式
    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也通过单例模式连接数据库。他们之间只实例化了一次还是?深信服和明源云遇到过。。

  • 对象被频繁创建和销毁,比如有一个config类,主要存储项目配置信息,如果这个类实例化多次,在代码对配置进行修改;如何知道哪个配置类中进行了修改了,使用单例模式可以避免这个情况。对于所有的改变都是基于这个类。而不会出现实例化多个类;

  • 创建型-简单工厂模式

    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‘));
    ```
    
`应用中经常使用的对象创建一个中央存储器来存放这些对象`

php几种设计模式

标签:require   dog   ali   单例   auto   类实例化   include   protected   prot   

原文地址:https://www.cnblogs.com/tanbinghao/p/14430392.html


评论


亲,登录后才可以留言!