行为型模式

模板方法模式

定义一个算法执行的骨架,具体实现延迟到子类实现

 

包括抽象的骨架类,具体实现类

 

观察者模式

定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新

 

由抽象目标类,具体目标类,抽象观察者类,具体观察者类组成

 

对目标类而言,抽象观察者引用代表的具体观察者集合是一组注册好的投递用户,通过调用事先约定的观察者方法,目标类将自身的变化信息通知所有注册的观察者集合。

 

在观察者模式中,核心的业务数据是储存在目标类中的,观察者在目标类的成员集合中注册后,目标类就在信息发生变化后通知观察者。

 

状态模式

将可能出现的状态抽离出来,将不同状态用到的共同行为作为抽象接口的方法,然后按照状态的不同实现接口的不同实现类,在状态载体类中,有一个状态的实例成员,通过set/get可以设置/得到当前状态,状态的接口方法有一个状态的载体类引用,通过在状态接口方法中操纵载体引用,就可以实现相应的状态操作。

 

策略模式

定义了一系列的算法,将每一个算法封装起来,使它们可以相互替换。

 

由三部分组成:抽象策略类,具体策略类,上下文场景

 

要完成一件任务,需要分成多个部分分段完成,每一段有不同处理流程,每种处理流程可以有多种算法选择,因此,对整个业务流程进行封装,可以使用模板方法模式,再用策略模式对每一段的每种算法进行封装,这样,模板模式中每个业务阶段的处理方法体就可以通过传入不同的算法封装对象达到选择策略灵活替换的效果。

 

 

职责链模式

存在多个具有相似处理能力的类,将这些对象链接成一个链,并沿着这个链传递请求,直到找到真正的处理类。避免请求发送者和接收者之间的耦合。

 

分成抽象处理类,具体处理类,上下文场景

 

每个抽象处理类中有一个指向同类的引用,用于存放职责链的下一环节。在处理类的业务方法中,对传入对象进行判断,如果对象属性符合该类能够处理的条件,则该类处理,否则交给该类的下一个环节处理。

 

命令模式

将请求或者操作封装到一个对象中。

包括抽象的命令类,具体的命令类,调用者,接收者

 

一般接收者是命令类的一个成员,通过命令的构造方法传入,命令类有一个execute()方法,用于调用自己的成员目标接收者执行该命令。

 

struts的action就是命令模式的一个例子

 

访问者模式

表示一个作用于某对象结构中的各元素的操作。它使开发者可以在不改变各元素的类的前提下定义作用于这些元素的新操作。主要有5部分组成:抽象访问类,具体访问类,抽象元素类,具体元素类,对象结果类

 

适用于频繁重构的场景,在父类相同但类型不同的实例集合中,不用改变类的结构,之需要修改访问者类就可以完成重构。

 

抽象元素类提供一个accept(Visitor visitor)方法,用于暴露给对象结果类

具体元素类实现抽象元素类,对于accept()方法,将自己的引用传入:visitor.visit(this); 

抽象访问类根据不同的具体元素类实现不同的visit方法

具体访问类将需要对这一类类实例调用的统一方法进行封装,封装在visit方法中

对象结果类中,一般有一个具体元素类的集合,生成一个visitor对象,在遍历这个集合时,通过accpet方法传入,调用到封装在VisitorImpl中的业务。

 

这样,如果具体元素类提供了比较完善的底层接口的情况下,对于某个业务逻辑的修改,可以不用修改每个实现类,而只需要修改访问者实现就行了。

 

调停者模式Mediator

用一个中介者对象来封装一系列的对象交互。使得交互对象之间不需要显式的互相引用,达到解耦的效果。

 

由4部分组成,抽象调停者类,具体调停者类,抽象同事类,具体同事类。

 

每个同事类都只有调用者的引用,通过调用调用者提供的接口,完成同事之间的交互。

 

备忘录模式Memento

备忘录模式就是一个保存另外一个对象内部状态的对象,这样可以将该对象恢复给原先保存的对象。

包括源发器类和备忘录类

 

源发器有包括一个针对备忘录类的get/set方法,通过这个方法可以导出/导入备忘录

源发器和备忘录拥有相同的字段

 

应用场景是当系统必须要保存一个对象在某一时刻的状态,以方便需要时恢复,就可以考虑此方法。


迭代器模式Iterator

提供一种顺序访问一个聚合对象中各个元素,而又不暴露该对象具体实现的方法。

JAVA COLLECTION广泛使用Iterator

 

解释器模式Interpreter

给定一个语言,定义它的文法的一种表示,并定义一个解释器。

包括抽象表达式角色,终结符表达式角色,非终结符表达式和上下文。

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值