zoukankan      html  css  js  c++  java
  • 【设计模式】文章摘要 查找联系人控件

    设计模式,真的非常像一个长,我们甚至从类图中存在的类图的直接进化。

    他们中的一些,像类图。有些语言近似,但它有一个不同的名称,不同“马甲”。让我们快来认一认。

    第一组:模板方法PK 建造者模式PK 工厂方法


    模板方法建造者模式工厂方法


    三者比較:同样点,主要思想都是定义一个框架。然后将一些步骤延迟到子类。

      不同点,首先。模板方法模式是行为型模式。而建造者模式工厂方法都是创建型模式。 


    两两比較:模板VS 建造者

         建造者模式用到模板方法,他们两个的使用范围区分就看构建的算法是否须要另外创建一个类。

    而承担这部分责任的则是建造者中应有的另外一个类,和其特有的指挥类。

        建造者VS工厂方法

        在建造者模式图中。假如把这个指挥类看做是终于调用的client,那么图中剩余的部分就能够看作是一个简单的工厂模式了。与工厂模式相比,建造者模式适用对象的创建过程更为复杂的情况,因此将对象的创建过程独立出来组成一个新的类——指挥类。

    也就是说,工厂模式是将对象的所有创建过程封装在工厂类中,由工厂类向client提供终于的产品;而建造者模式中,建造者类一般仅仅提供产品类中各个组件的建造,而将详细建造过程交付给指挥类。

    由指挥类负责将各个组件依照特定的规则组建为产品,然后将组建好的产品交付给client。



    第二组  状态图VS策略图

                        

    状态图策略图

                                                                                                      艾玛~这一模一样的啊~~有多少和我一样,第一次都没发现。。但是既然一模一样,为什么又把一个模式说两遍呢?要是说不同点,从这张图中恐怕是难有答案了。

    我们来从其它角度详细分析一下。

    让我们来看看它们之间很多其它的相似之处:

    1. 加入新的状态或策略都非常easy,并且不须要改动使用它们的Context对象。

    2. 在状态模式和策略模式中,Context对象对改动是关闭的。加入新的状态或策略,都不须要改动Context。
    3. 正如状态模式中的Context会有初始状态一样,策略模式相同有默认策略。
    4. 状态模式以不同的状态封装不同的行为。而策略模式以不同的策略封装不同的行为。

    5. 它们都依赖子类去实现相关行为。

     以下来看看详细的不同

      1. 状态模式封装了对象的状态,而策略模式封装算法或策略。由于状态是跟对象密切相关的,它不能被重用;而通过从Context中分离出策略或算法,我们能够重用它们。

      2. 在状态模式中。每一个状态通过持有Context的引用,来实现状态转移;可是每一个策略都不持有Context的引用。它们仅仅是被Context使用。
      3. 状态模式中非常好的定义了状态转移的次序;而策略模式并无此须要:Client能够自由的选择不论什么策略。

      


    第三组 代理模式VS装饰模式

               

    代理模式 装饰模式


      仅看类图,感觉两者并非十分相似。

    可是细心的同学也会发现两者语法形式上差点儿全然一样。

    让我们来看看它们之间很多其它的相似之处:

      1. 对装饰器模式来说,装饰者(decorator)和被装饰者(decoratee)都实现同一个接口。对代理模式来说,代理类(proxy class)和真实处理的类(realclass)都实现同一个接口。

      2. 不论我们使用哪一个模式,都能够非常easy地在真实对象的方法前面或者后面加上自己定义的方法。


     以下来看看详细的不同

      1. 差别最本质上是装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制。并不提供对象本身的增强功能。

      2. 还有一个差别在于代理模式,对于被代理的类是固化在代理类中的,而对于装饰器模式,被装饰的类是调用时实例化的,也就是说被装饰的类是能够在调用时动态选择的。


    总结

    此外。桥接模式和适配器模式等等也是有可比性的。第一次学完设计模式,我知道。每个设计模式并非独立的。遵循6大原则和实际须要变化和封装的情况,我们灵活的来选择并应用它。

    《大话设计模式》的学习告一段落。也就意味着设计模式要開始真正的走进我们的生活了。

    整个过程我的收获非常多。包含对类图的理解。各个关系以及由类图到代码的转变。还有在不断的理解变化。设计模式,让我相信学习来源于生活。多结合生活,就能更好的理解所学。至于不足就是,设计模式的理解还不够到位,也有待在实践中去多应用,多体会。




    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    51nod数字1的数量
    bzoj3669: [Noi2014]魔法森林 lct版
    【NOI2014】起床困难综合症 位运算+贪心
    bzoj2631: tree lct
    bzoj2002 弹飞绵羊 lct版
    codevs1245最小的N个和 小根堆
    RTSP/GB28181/SDK协议视频融合平台EasyCVR接口获取协议平台接入参数的调用方法
    RTSP/GB28181/SDK协议视频融合平台EasyCVR上传通道数据库不显示怎么解决?
    基于视频协议融合平台EasyCVR开发的视频综合管理监控平台EasyCVS通道流检查功能的实现
    RTSP/GB28181/HIKSDK/大华SDK协议安防视频云平台EasyCVR新增告警功能介绍
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4670041.html
Copyright © 2011-2022 走看看