行为型模式
责任链模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解释器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
备忘录模式(Memento Pattern)
观察者模式(Observer Pattern)
状态模式(State Pattern)
空对象模式(Null Object Pattern)
策略模式(Strategy Pattern)
模板模式(Template Pattern)
访问者模式(Visitor Pattern)
责任链模式(Chain of Responsibility Pattern)
为请求创建了一个接收者对象的链。
发送者和接收者进行解耦。
发送者只要把请求发送到 链上,无需关心请求的处理细节和请求的传递。
何时使用:在处理消息的时候以过滤很多道。
如何解决:拦截的类都实现统一接口。
关键代码:Handler 里面聚合它自己,在 HanleRequest 里判断是否合适,如果没达到条件则向下传递,向谁传递之前 set 进去。
应用实例: JAVA WEB 中 Apache Tomcat 对 Encoding 的处理,Struts2 的拦截器,jsp servlet 的 拦截器。
命令模式(Command Pattern)
解释器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
备忘录模式(Memento Pattern)
观察者模式(Observer Pattern)
监听器就是一个观察者模式
定义:对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
关键:
1、需要一个抽象的被观察者,一个抽象的观察者,一个实现了抽象类的被观察者,一堆实现了抽象观察者类的观察者。
2、需要一个集合来存储这么多个观察者
JAVA 中已经有了对观察者模式的支持类。被观察者类,继承java.util.Observable类。观察者类,它实现java.util.Observer接口。
1、触发更新分两步:1、setChanges 2、notifyObservers,根据boolean类型的change判断在调用notifyObservers时是否通知观察者们。
2、Observable使用Vector作为集合类型,用以构建线程安全的操作
状态模式(State Pattern)
context 对象(Context): 维护一个ConcreteState子类的实例,这个实例定义当前状态。
状态接口(State): 定义一个接口以封装与Context的一个特定状态相关的行为。
具体状态类(ConcreteState): 每一子类实现一个与Context的一个状态相关的行为。
不同状态下有这不同的操作,
如:电梯状态为(运行,停止)状态时,点击开门按钮,执行的操作为(不执行开门操作,执行开门操作)。
空对象模式(Null Object Pattern)
策略模式(Strategy Pattern)
context 对象(Context): 维护一个ConcreteStrategy 子类的实例,这个实例定义当前使用哪种策略。
策略接口(Strategy ): 定义一个接口以封装context 对象的执行算法。
策略类(ConcreteStrategy ): 每一子类实现一种context 对象的执行算法。
策略模式和状态模式不一样,策略模式是让用户指定更换的策略算法,而状态模式是状态在满足一定条件下的自动更换。状态模式中用户最多只能设置初始状态,而无法指定状态。