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自己,工厂调用类的生成对象的方法

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

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


原文地址:https://www.cnblogs.com/finddata/p/11057747.html