php常用的设计模式实践【1】

PSR-0规范

  • 命名空间必须与绝对路径一致
  • 类名首字母必须大写
  • 除了入口文件外,其他‘.php’文件必须只有一个类

PHP链式操作必须在每个function里return $this;

三种基础设计模式:

  • 工厂模式
  • 单例模式
  • 注册树模式

①单例模式

作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

应用场景:

  • 数据库操作,避免大量的new 操作消耗资源,还可以减少数据库连接这样就不容易出现too many connections情况
  • 系统中需要一个类全局控制某些配置信息(如zendFramework的FrontController)
  • 在一次页面请求中,便于调试。(所有的数据库操作都集中在一个类中,可在类中设置钩子,输出日志,从而避免导出var_dump,echo)

实现:(三私一公),公开的静态方法为对象的接口,私有属性用于存放唯一的单例对象。私有化构造方法和克隆方法保证只存在一个单例。

优点:静态方法可以在全局访问内访问,当我们需要一个单例模式的对象,只需要调用静态方法获取先前实例化的对象,无需重新实例化。

单例模式示例代码

②工厂模式

将对象的生产从直接new 一个对象,改成通过调用一个工厂方法生产。(代码若需要修改new的对象时,无需多处修改,只需修改生成对象方法)

若需要实例化的对象可选择不同的类,可省略if else多层判断,给工厂方法传入对应的参数,利用多态性实例化对应的类。

工厂模式示例代码

③注册树模式

用于创建对象的时候我们的对象与相应的变量进行绑定。注册树模式的类必须要有一个set方法用来绑定实例化对象,get方法取这个实例化对象,_unset方法销毁绑定的实例化对象。

注册树模式示例代码