• php设计模式


    所谓设计模式就是在哪里new一个类,如何调用

    共厂:在另一个F类(工厂类)中new ;

    单例:在类内部new自己,工厂调用

    注册树:类内部new自己,工厂调用,并把new保存到第三个类属性中

    工厂模式:

    使用一个工厂类的方法生成对象,而不是new;

    优点:如果多出new classname  一旦这个类名改变或者其他的改变,所有的都要修改,而使用工厂则只修改一处

    //工厂模式
    class factory{
      static function createDatebase(){
        $db = new Database();
        return $db;
      }
    }
    $db =factory::createDatebase()
    //单例模式
      //特点:构造函数私有化,不允许外部new
      //内部另一个方法new自己保存到属性
    class Database{
      protected $db;
      private function __construct(){}
      static function getInstance(){
        if(self::$db){
          return self::$db;
        }else{
          self::$db= new self();
          return self::$db;
        }
      }
    }
    class Factory{
      static function createDatebase(){
        $db=Datebase::getInstance();
        return $db
      }
    }
    $db =Factory::createDatebase();
    //注册树模式
    class Register{
      protected static $objects;
      static function set($alias,$object){
        self::$object[$alias] = $object;
      }
      static function get($name){
        return self::$object[$name];
      }
      function _unset($alias){
        unset(self::$object[$alias])
      }
    }
    class Factory{
      static function createDatebase(){
        $db=Datebase::getInstance();
        register::set('db1',$db);
        return $db
      }
    }
    
    $db = Register::get('db1')



    /******************工厂模式******************************/
    工厂模式:在工厂里边new对象,

    用法:调用工厂

    /*******************单例模式************************/

    单例模式:类自身私有化构造不允许外部调用,类自身一个方法new自己,工厂调用类的生成对象的方法

    /*******************注册树模式**************************/

    类本身单例,工厂调用类本身的生成对象的方法,生成的对象挂到注册树类,用时直接到注册数上找

    
    
  • 相关阅读:
    CCF CSP 201709-1 打酱油 (贪心)
    CCF CSP 201712-1 最小差值
    CCF CSP 201612-1 中间数
    CCF CSP 201609-1 最大波动
    CCF CSP 201604-1 折点计数
    CCF CSP 201512-1 数位之和
    CCF CSP 201509-1 数列分段
    CCF CSP 201503-1 图像旋转 (降维)
    CCF CSP 201412-1 门禁系统
    CCF CSP 201409-1 相邻数对
  • 原文地址:https://www.cnblogs.com/finddata/p/11057747.html
Copyright © 2020-2023  润新知