zoukankan      html  css  js  c++  java
  • 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. 当不能采用生成子类的方法进行扩充时。

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

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

  • 相关阅读:
    畅通工程续 dijkstra
    能量项链 区间dp
    机器人军团
    skiing
    数论知识
    灯泡游戏
    60. 第k个排列
    17. 电话号码的字母组合
    101. 对称二叉树
    144. 二叉树的前序遍历
  • 原文地址:https://www.cnblogs.com/yeyublog/p/6925221.html
Copyright © 2011-2022 走看看