首页 > 代码库 > 设计模式——行为型模式(一)
设计模式——行为型模式(一)
设计模式的第三大类型——行为模式,下面是对观察者模式、模板方法模式、命令模式、状态模式、职责链模式这五个的读后总结,欢迎交流!
观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。[大话设计模式]
特点:类似于面向对象的多态,只是面向对象多态讲的是同一对象在不同时间和不同条件下表现不同状态,而观察者模式的多态则讲求的是某一操作(或命令)引起的不同对象在同一时间作出反应,这个反应可相同、可不同,可展示不同的功能、显示不同的现象。
使用:一个对象的改变需要同时改变其他对象的时候。
协助:用委托来解决“观察者模式的多态”的方法不同名,无法统一行动的难题。
模板方法模式(Template Method):定义一个操作的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构及可定义该算法的某些特定步骤。[大话设计模式]
特点:实现大量代码的复用,而不是复制。这样在客观上保证了模板下的实例的一致性,又在后期的维护中提供了便利。与面向对象的继承的意义如出一辙。
使用:当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式。
命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化;可以对请求排队或记录请求日志,以及支持可撤销的操作。[大话设计模式]
特点:可以对请求排队并按顺序处理命令,还支持撤销操作。
提示:敏捷开发原则告诉我们,不要为代码添加基于猜测的实际不需要的功能。
使用:如果不清楚一个系统是否需要命令模式,一般就不要着急去实习它,事实上,在需要的时候通过重构实现这个模式并不困难,只有在真正需要如撤销/恢复操作等功能时,把原来的代码重构为命令模式才有意义。[大话设计模式]
状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
特点:状态模式通过把各种状态转移逻辑分布到State的子类之间,来减少相互间的依赖。
提示:在使用过程中,多用到判断语句,这就需要,这些判断语句将状态的变化分成阶段,需要注意的是,在划分范围时要考虑齐全,不能出现遗漏或重叠,避免发生错误。如果因实际造成划分过散,最好添加使用错误引导语句规避。
使用:当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了。
职责链模式(Chain of Responsibility):使多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。[大话设计模式]
特点:一个请求,顺着职权由低向高请求,直到有权处理并处理掉为止。
提示:请求沿着链传递,直到有对象处理它为止。要问了,到最后也没有处理怎么办呢?这要规避,在设计时就需要考虑周到,最后最好使用错误引导语句。
使用:对于一个请求,如果需要审定职权后,才能处理时。