所谓设计模式就是在哪里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自己,工厂调用类的生成对象的方法
/*******************注册树模式**************************/
类本身单例,工厂调用类本身的生成对象的方法,生成的对象挂到注册树类,用时直接到注册数上找