php设计模式总结2

策略模式:

定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

封装:把行为用接口封装起来,我们可以把那些经常变化的部分,从当前的类中单独取出来,用接口进行单独的封装。
互相替换:我们封装好了接口,通过指定不同的接口实现类进行算法的变化。
 

单例模式:

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

要点:1.需要一个保存类的唯一实例静态成员变量: 

         2.构造函数和克隆函数必须声明为私有的,防止外部程序new类从而失去单例。

         3.必须提供一个访问这个实例的公共的静态方法(通常是getInstance方法),从而返回唯一实例的一个引用

private static $_instance;

private
function __construct() { $this->_db = pg_connect('xxxx'); } private function __clone() { }//覆盖__clone()方法,禁止克隆 public static function getInstance() { if(! (self::$_instance instanceof self) ) { self::$_instance = new self(); } return self::$_instance; }

 工厂模式:

 由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

 核心思想就是:用一个单独的工厂类去创建实例化的过程。

 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.

 通过使用工厂类,外界可以从直接创建具体产品对象的尴尬 局面摆脱出来,仅仅需要负责“消费”对象就可以了。

 而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。

 不需要了解实例是如何工作的,只需要在工厂里面创建它即可。

 组合模式:

 有时候又叫做部分-整体模式。常使用的场景:树形菜单,文件夹菜单,部门组织架构图

 用于将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用具有一致性。

 组合模式定义了一个单根继承体系,使具有截然不同职责的集合可以并肩工作。

 装饰器模式:

 装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。

 它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

 组件对象的接口:可以给这些对象动态的添加职责

  所有装饰器的父类:需要定义一个与组件接口一致的接口,并持有一个Component对象,该对象其实就是被装饰的对象。

  具体的装饰器类:实现具体要向被装饰对象添加的功能。用来装饰具体的组件对象或者另外一个具体的装饰器对象。

  适用场景: 

    1. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。

    2. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实。

    3. 当不能采用生成子类的方法进行扩充时。

       一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。

       另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。

posted @ 2017-05-31 17:32  leayrainy  阅读(139)  评论(0编辑  收藏  举报