php设计模式
发布时间:2020-12-13 17:33:19 所属栏目:PHP教程 来源:网络整理
导读:所谓设计模式就是在 哪里new 一个类, 如何调用 共厂:在 另一个F类 (工厂类)中new ; 单例:在 类内部 new自己,工厂调用 注册树:类 内部new 自己,工厂调用,并把new保存到第三个类属性中 ? 工厂模式: 使用一个工厂类的方法生成对象,而不是new; 优点
所谓设计模式就是在哪里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自己,工厂调用类的生成对象的方法 ? /*******************注册树模式**************************/ 类本身单例,工厂调用类本身的生成对象的方法,生成的对象挂到注册树类,用时直接到注册数上找 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |