加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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对象,

用法:调用工厂

?

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

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

?

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读