首页 > 技术文章 > 行为型模式

jyzj 2021-02-26 15:21 原文

行为型模式:

 行为型模式:类与对象交互中的职责分配

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结果及可重定义该算法的某些特定步骤。

特点:

1.用最简洁的机制,为许多应用程序框架提供灵活的扩展点,是代码复用方面的基本实现结构。

2.可以灵活应对子步骤的变化。

3.Template Method调用的虚方法可以具有实现,也可以没有实现。

 

Command命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。

 Interpreter 解释器模式:给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子。

Mediator 中介者模式:用一个中介对象来封装一系列的对象交互。对象不需要显示相互引用,而且可以独立改变它们之间的交互。

Iterator 迭代器模式:可以让外部客户代码透明的访问其中国包含的元素。

Observer 观察者模式:定义对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖它的对象都得到通知并自动更新。

 Chain Of Responsibility 职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着链传递请求,知道有对象处理它为止。

 Memento 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后可以将该对象恢复到原先保存的状态。

 State 状态模式:允许一个对象在其内部状态改变时改变它的行为。

Strategy 策略模式:定义一系列算法,把他们一个个封装起来,并且使它们可互相替换。

Visitor 访问者模式:表示一个作用于某对象结构中的各元素操作。

 名称  要点
 Command命令模式

1.Command模式的根本目的在于将“行为请求”与“现实实现者”解耦。在面向对象中是“将行为抽象为对象”。

2.实现Command接口的具体对象ConcreteCommand又是根据需要可能会保存一些额外的状态信息。

3.通过使用Composite模式,可以将多个“命令”封装成一个“复合命令”MacroCommmand。

Interpreter 解释器模式

1. Interpreter模式的来表示文法规则,从而可以使用面向对象技巧来方便地“扩展”文法。

2. Interpreter模式比较适合简单的文法表示,对于复杂的文法表示,会产生比较大的类层次结构。

 Mediator 中介者模式

 1.随着控制逻辑的复杂化,Mediator具体对象的实现可能相当复杂。这时候可以对Mediator对象进行分解处理。

2.Facade模式是解耦系统外到系统内的对象关联关系。Mediator模式是解耦系统内各个对象之间的关联关系。

 Iterator 迭代器模式

 1.迭代抽象:访问一个聚合对象的内容而无需暴露它的内部表示。

2.迭代多态:为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不用的集合结构上进行操作。

 Observer 观察者模式

 1.目标发送通知时,无需指定观察者,通知会自动传播。观察者自己决定是否需要订阅通知,目标对象对此一无所知。

2.c#event中,委托充当了抽象的Observer接口,而提供事件的对象充当了目标对象。委托是比抽象Observer接口更为送偶合的设计。

 Chain Of Responsibility 职责链模式

应用Chain of Responsibility模式后对象的职责分派将更具灵活性。我们可以在运动时动态添加/修改请求的处理职责。

  Memento 备忘录模式

 1.在实现Memento模式中,要防止原发器以外的对象访问备忘录对象。备忘录对象两个接口,一个为原发器使用的宽接口;一个为其它对象使用的窄接口。

2.在实现Memento模式时,要考虑拷贝对象状态的效率问题,如果对象开销比较大,可以采用某种增量式改变来进行Memento模式。

 State 状态模式

 1.State模式将所有一个特定状态相关的行为都放入一个State的子类对象中,在对象状态切换时,切换相应的对象。

2.如果State对象没有实列变量,那么各个上下文中可以共享同一个State对象,从而节省对象开销。

Strategy 策略模式

1.Strategy及其子类为组件提供了一系列可重用的算法,从而可以使得,类型在运行时方便地根据需要在各个算法之间进行切换。

2.Strategy模式提供了用条件判断语句意外的另一种选择,消除条件判断语句,就是在解耦合。

3.与State类似,如果Strategy对象没有实列变量,那么各个上下文中可以共享同一个Strategy对象,从而节省对象开销。

Visitor 访问者模式

1.Visitor模式通过所谓双重分发来实现在不更改类层次结构的前提下,在运行时透明的为类层次结构上的各个类动态添加新的操作。

2。双重分发即Visitor模式中间包括了两个多态分发。 

 

结构形模式:https://www.cnblogs.com/jyzj/p/14452481.html

 

推荐阅读