天高云淡 发表于 2018-12-12 08:15:58

PHP开发中常见的设计模式

一、工厂模式
工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式。
使用工厂模式的好处是,如果你想要更改所实例化的类名等,则只需更改该工厂方法内容即可,不需逐一寻找代码中具体实例化的地方(new处)修改了。为系统结构提供灵活的动态扩展机制,减少了耦合。
  
  三、单例模式

  单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
  单例模式是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。
  单例模式分3种:懒汉式单例、饿汉式单例、登记式单例。

[*]  $_instance必须声明为静态的私有变量
[*]  构造函数和析构函数必须声明为私有,防止外部程序new 类从而失去单例模式的意义
[*]  getInstance()方法必须设置为公有的,必须调用此方法 以返回实例的一个引用
[*]  ::操作符只能访问静态变量和静态函数
[*]  new对象都会消耗内存
[*]  使用场景:最常用的地方是数据库连接。
[*]  使用单例模式生成一个对象后, 该对象可以被其它众多对象所使用。
[*]  私有的__clone()方法防止克隆对象
  单例模式,使某个类的对象仅允许创建一个。构造函数private修饰,
申明一个static getInstance方法,在该方法里创建该对象的实例。如果该实例已经存在,则不创建。比如只需要创建一个数据库连接。
  class Single {
  private $name;//声明一个私有的实例变量
  private function __construct(){//声明私有构造方法为了防止外部代码使用new来创建对象。
  }
  static public $instance;//声明一个静态变量(保存在类中唯一的一个实例)
  static public function getinstance(){//声明一个getinstance()静态方法,用于检测是否有实例对象
  if(!self::$instance) self::$instance = new self();
  return self::$instance;
  }
  public function setname($n){ $this->name = $n; }
  public function getname(){ return $this->name; }
  }
  $oa = Single::getinstance();
  $ob = Single::getinstance();
  $oa->setname('hello world');
  $ob->setname('good morning');
  echo $oa->getname();//good morning
  echo $ob->getname();//good morning
  四、注册模式
  注册模式,解决全局共享和交换对象。已经创建好的对象,挂在到某个全局可以使用的数组上,在需要使用的时候,直接从该数组上获取即可。将对象注册到全局的树上。任何地方直接去访问。
  
页: [1]
查看完整版本: PHP开发中常见的设计模式