设计模式-行为型模式

摘自大话设计模式
行为型模式
观察者模式:定义一种对象间的一对多的依赖关系,当一个对象状态发生变化,所有依赖他的对象都得到通知并自动更新。
设计模式-行为型模式

模板方法模式:定义一个操作的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法结构即可重定义该算法的某些特定步骤。
由一个抽象类组成,这个抽象类定义了需要覆盖的可能有不同实现的模板方法,每个派生类将为模板类实现新方法。
设计模式-行为型模式

命令模式:将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;可以对请求排队或记录请求日志,以及支持可撤销的操作。
将调用操作的对象和知道如何实现操作的对象解耦。发送者只管发送请求,而命令模式可以在不同时刻指定,排列和执行请求;也可以在实施操作前保存状态,以便支持取消重做的操作;还可以记录整个操作的日志;
设计模式-行为型模式

状态模式:允许一个对象在其内部状态改变时改变他的行为,让对象看起来好像修改了他的类。
把条件分支分解成多个子类,利用多态提高扩展性和可维护性。
决定状态转义的逻辑不在if else 或者swicth里面,而是分布在状态子类,由于所有与状态相关的代码都存在于某个状态子类中,所以通过定义新的子类可以很容易定义新的状态和实现状态的转换。
设计模式-行为型模式

职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这链传递请求,直到一个对象处理他为止。
也是请求者与执行者分离,因为有多个对象可以处理这个请求,但是事先不知道哪个对象将要处理,所以把所有对象排成链,并沿着这个链传递请求,直到一个对象处理了请求。
设计模式-行为型模式

解释器模式:给定一个语言,定义他的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
如果一个特定类型的问题的发生频率够高,那就可以考虑将该问题的各个实例表述为一个简单语言中的句子。(构建解释器,解释这些句子)
设计模式-行为型模式

中介者模式:用一个中介对象封装一系列对象的交互。中介者使得各个对象不需要显式的相互引用,从而使得耦合松散,而且可以独立改变他们之间的交互。
将集体行动单独封装为中介者,中介者协调控制一组对象的交互。对象不需要显式的相互引用,他们只知道中介者,这样可减少对象的相互连接。
设计模式-行为型模式

访问者模式:表示一个作用于某对象结构中的各元素的操作,他使得你可以在不改变元素的类的前提下定义作用于这些元素的新操作。(世界上有男人女人,访问者可定义男人女人的喜怒哀乐并可轻松扩展新情绪。)
访问者增加具体的元素是困难的,但增加依赖于复杂对象结构的构件的操作很容易,仅需增加一个访问者即可为该对象定义一个新操作。
设计模式-行为型模式

策略模式:定义一系列算法,单独封装,并且使他们可以互相替换。本模式使得算法可以独立于使用他的客户而变化。
优先使用对象组合,而非类继承。
设计模式-行为型模式

备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以将该对象随时恢复到原先保存的状态。
可避免暴露一些只应该由当前对象管理却又必须存储在当前对象外的信息。可把复杂的对象的内部信息对其他对象隐藏,从而保持了封装边界。
设计模式-行为型模式

迭代器模式:提供一种方法可顺序访问对象的各个元素,又不暴露该对象的内部表示。
将对列表的访问和遍历从列表对象中分离了出来并放到一个迭代器对象中,迭代器对象定义了一个访问列表元素的接口,并可跟踪当前元素,并可知道哪些元素已经遍历过了。
设计模式-行为型模式

猜你喜欢

转载自blog.51cto.com/5591787/2126351