zoukankan      html  css  js  c++  java
  • 设计模式——行为型模式(一)

    设计模式的第三大类型——行为模式,以下是对观察者模式、模板方法模式、命令模式、状态模式、职责链模式这五个的读后总结,欢迎交流!

     

         观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,全部依赖于它的对象都得到通知并被自己主动更新。[大话设计模式]

           特点:类似于面向对象的多态,仅仅是面向对象多态讲的是同一对象在不同一时候间和不同条件下表现不同状态,而观察者模式的多态则讲求的是某一操作(或命令)引起的不同对象在同一时间作出反应,这个反应可同样、可不同,可展示不同的功能、显示不同的现象。

           使用:一个对象的改变须要同一时候改变其它对象的时候。

           协助:用托付来解决“观察者模式的多态”的方法不同名,无法统一行动的难题。

     

         模板方法模式(Template Method):定义一个操作的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类能够不改变一个算法的结构及可定义该算法的某些特定步骤。[大话设计模式]

           特点:实现大量代码的复用,而不是复制。这样在客观上保证了模板下的实例的一致性,又在后期的维护中提供了便利。与面向对象的继承的意义如出一辙。

           使用:当我们要完毕在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更具体的层次上的实现可能不同一时候,我们通常考虑用模板方法模式。

     

         命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对client进行參数化;能够对请求排队或记录请求日志,以及支持可撤销的操作。[大话设计模式]

           特点:能够对请求排队并按顺序处理命令,还支持撤销操作。

           提示:敏捷开发原则告诉我们,不要为代码加入基于推測的实际不须要的功能。

           使用:假设不清楚一个系统是否须要命令模式,一般就不要着急去实习它,其实,在须要的时候通过重构实现这个模式并不困难,仅仅有在真正须要如撤销/恢复操作等功能时,把原来的代码重构为命令模式才有意义。[大话设计模式]

     

         状态模式(State):当一个对象的内在状态改变时同意改变其行为,这个对象看起来像是改变了其类。

           特点:状态模式通过把各种状态转移逻辑分布到State的子类之间,来降低相互间的依赖。

           提示:在使用过程中,多用到推断语句,这就须要,这些推断语句将状态的变化分成阶段,须要注意的是,在划分范围时要考虑齐全,不能出现遗漏或重叠,避免错误发生。假设因实际造成划分过散,最好加入使用错误引导语句规避。

           使用:当一个对象的行为取决于它的状态,而且它必须在执行时刻依据状态改变它的行为时,就能够考虑使用状态模式了。

     

         职责链模式(Chain of Responsibility):使多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。[大话设计模式]

           特点:一个请求,顺着职权由低向高请求,直到有权处理并处理掉为止。

           提示:请求沿着链传递,直到有对象处理它为止。要问了,到最后也没有处理怎么办呢?这要规避,在设计时就须要考虑周到,最后最好使用错误引导语句。

    使用:对于一个请求,假设须要审定职权后,才干处理时。

  • 相关阅读:
    poj 3096 Surprising Strings (set)
    hdu 4038 stone
    STL set 使用总结
    poj 3185 The Water Bowls (bfs 加未压缩)
    QPixmap显示图片
    addStretch的作用 .
    Qt SizeHint()
    StyleSheet
    linux编程守护进程编写
    Qt样式表的使用
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4468619.html
Copyright © 2011-2022 走看看