第六周作业

行为模式


 

概念

行为模式:关注系统中对象之间的相互交互,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责,共11种模式。

分别是:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

1.责任链模式(Chain Of Resposibility):将能够处理同一类的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。

使用场景

1.java,异常机制就是一种责任链模式。一个try可以对应多个catch,当第一个catch不匹配类型,则自动跳到第二个catch

2.javascript语言中,事件的冒泡和捕获机制。java语言中,事件的处理采用观察者模式

3.Servlet开发中,过滤器的链式处理

4.Struts2中,拦截器的调用也是典型的责任链模

2. 迭代器模式(iterator):提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。

使用场景

  1.提供一种可以遍历聚合对象的方式。又称为:游标cursor模式

  2.聚合对象:存储数据

  3.迭代器:遍历数据

3.中介者模式(mediator):是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。

使用场景: 

1.系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。

2.想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。

4.命令模式(command):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作.也称之为:动作Action模式,事务transaction模式。

使用场景认为是命令的地方都可以使用命令模式,比如:

1.GUI 中每一个按钮都是一条命令。

2.模拟 CMD。

5.解析器模式(Interpreter):提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。

使用场景:

          1.EL表达式的处理

          2. 正则表达式解析器

          3. SQL语法的解析器

          4. 数学表达式解析器

6.访问者模式(visitor):表示一个作用于某对象结构中的各个元素的操作,它使我们可以在不改变元素的类的前提下定义作用于这些元素的新操作。

使用场景:

            1.XML文档解析器设计

            2.编译器的设计

            3.复杂集合对象的处理

7.策略模式(strategy):策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

使用场景

 1.如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。

 2.一个系统需要动态地在几种算法中选择一种。

 3.如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。

 

8.模板方法模式(template method):一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

使用场景

 1.有多个子类共有的方法,且逻辑相同。

 2.重要的、复杂的方法,可以考虑作为模板方法。

9.状态模式(state):类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

使用场景

1.打篮球的时候运动员可以有正常状态、不正常状态和超常状态。

2.曾侯乙编钟中,'钟是抽象接口','钟A'等是具体状态,'曾侯乙编钟'是具体环境(Context)。

10.观察者模式(observer):当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。

使用场景

1.一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。

2.一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变,可以降低对象之间的耦合度。

3.一个对象必须通知其他对象,而并不知道这些对象是谁。

11.备忘录模式(memento):保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。

使用场景

 1.需要保存/恢复数据的相关状态场景。

 2.提供一个可回滚的操作。

 

posted @ 2021-02-26 12:26  计应192西三组  阅读(80)  评论(0编辑  收藏  举报