行为型设计模式 — 访问者模式

什么是访问者模式访问者模式的定义是:封装某些作用于某种数据结构中各元素的访问,使得在不改变该数据结构的前提下修改或新增作用于这些元素的操作。简单来说,访问者模式就是引入一个访问者角色统一负责对目标对象的所有具体实现的访问。访问者模式的类图如下:访问者模式下有四类角色:(1)Element:被访问者抽象角色。声明接受访问者实例的accept接口,这个接口接收一个访问者实例,并声明实际的操作接口(2)…

more >>

行为型设计模式 — 状态模式

什么是状态模式状态模式允许对象在状态发生变化时执行不同的行为。状态模式是对象的一种行为模式,它提供一种机制来统一管理对象的多种状态以及状态的转移,使得对对象的调用随着对象状态的改变而执行不同的行为。状态模式的类图如下:状态模式下有三类角色:Context:上下文类,持有State属性并提供客户端感兴趣的接口State:状态接口ConcreteState:具体的状态类示例程序:State接口pack…

more >>

行为型设计模式 — 备忘录模式

什么是备忘录模式备忘录模式(Memento Pattern)又称快照模式(Snapshot Pattern),是对象的一种行为型模式。备忘录模式引入一个备忘录角色,用来记录一个对象某个时刻的状态(对象的状态通常由对象的属性值决定),以便在将来某个时刻恢复这个状态。备忘录模式的类图如下:Originator:原始角色,具有某些属性,提供创建备忘录和恢复备忘录的接口,以实现保存某一时刻状态和恢复状态M…

more >>

行为型设计模式 — 命令模式

什么是命令模式命令模式在调用者与被调用者之间引入一个命令角色,即将调用者与被调用者分离开开,并将具体的调用过程独立封装。命令模式的类图如下:命令模式下有四类角色:Receiver:被调用者角色,用于接收处理调用请求Command:抽象命令角色,持有Receiver实例,声明execute接口ConcreteCommand:具体命令角色,实现execute方法,调用Receiver处理请求Invok…

more >>

行为型设计模式 — 责任链模式

什么是责任链模式责任链模式下,有多个对象,每个对象持有下一个对象的引用,从而形成一条链,客户端发出的请求在这条链上进行传递,直到最后一个对象处理完这个请求。责任链模式的类图如下:责任链模式下有两种角色:Hander:抽象处理者角色,提供设置下一个处理者的setter方法,并提供接受处理请求的接口ConcreteHandler:具体处理者角色,实现处理请求的方法,若没有下一个处理者,则处理请求示例程…

more >>

行为型设计模式 — 迭代器模式

迭代器模式比较容易理解,即创建一个迭代器去顺序访问聚集对象的元素。使用迭代器模式可以实现对具体对象元素的访问,而暴露聚集对象的内部结构。迭代器模式常用于集合元素的访问中,例如Java Collection API中,调用Collection对象的iterator()方法可以返回当前集合的迭代器,从而实现顺序访问。迭代器模式的类图如下:示例程序:Iterator接口package patterns….

more >>

行为型设计模式 — 观察者模式

什么是观察者模式观察者模式定义了类之间一对多的依赖关系,多个观察者对象同时监听一个目标对象,当目标对象发生状态的改变时,会通知所有观察者对象,使它们自动执行一些行为。观察者模式也称发布-订阅模式,类似我们常用的RSS订阅,当RSS源发生更新时,RSS阅读器会自动加载更新的内容。Java图形化用户界面编程中的控件事件机制也是观察者模式的应用案例,例如一个Button控件,我们可以在上面注册点击监听器…

more >>

行为型设计模式 — 模板方法模式

什么是模板方法模式模板方法模式就是定义一个抽象类,声明并实现一个模板方法作为所有子类的主要算法的模板,并声明一些基本方法作为算法的实现步骤,这些基本方法中,包含一些抽象方法作为算法实现的可变部分,让子类去实现具体的逻辑,那么不同子类可以用不同方式去实现这些抽象方法,从而使得它们从抽象类中继承而来的模板方法表现出不同的行为。基本方法中也可以包含一些具体方法作为算法实现的公共部分,子类可以选择直接重用…

more >>

行为型设计模式 — 策略模式

什么是策略模式策略模式(Strategy)定义了一系列算法,并将它们各自独立封装,实现一个公共的算法接口,使用算法时通过调用该接口执行具体的算法行为,使得客户端可以在不同算法之间自由切换。策略模式常用于算法决策系统,当需要在不同情况下使用不同的策略时,或者策略需要经常改变时,可以选择使用策略模式。策略模式下有三个角色:抽象策略角色、具体策略角色与环境角色。具体策略角色用来定义算法的具体行为,而抽象…

more >>