JDK中的设计模式(二)行为型

1. 责任链

避免将请求的发送者附加到其接收者,从而使其它对象也可以处理请求;将请求以对象的方式发送到链上直到请求被处理完毕。

java.util.logging.Logger#log()
javax.servlet.Filter#doFilter()

2. 命令模式

将命令封装进对象中;允许使用命令对象对客户对象进行参数化;允许将命令对象存放到队列中。

java.lang.Runnable
javax.swing.Action

3. 解释器模式

为语言创建解释器,通常由语言的语法和语法分析来定义。

java.util.Pattern
java.text.Normalizer
java.text.Format

4. 迭代器

提供一种一致的访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。

java.util.Iterator
java.util.Enumeration

5. 中间人模式

使用中间人对象来封装对象之间的交互。中间人模式可以让降低交互对象之间的耦合程度。

java.util.Timer
java.util.concurrent.Executor#execute()
java.util.concurrent.ExecutorService#submit()
java.lang.reflect.Method#invoke()

6. 备忘录模式

在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态。

java.util.Date
java.io.Serializable

7. 观察者模式

定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态。

java.util.EventListener
javax.servlet.http.HttpSessionBindingListener
javax.servlet.http.HttpSessionAttributeListener
javax.faces.event.PhaseListener

8. 策略模式

定义一系列算法,封装每个算法,并使它们可以互换。策略可以让算法独立于使用它的客户端。

java.util.Comparator#compare()
javax.servlet.http.HttpServlet
javax.servlet.Filter#doFilter()

9. 模板方法

定义算法框架,并将一些步骤的实现延迟到子类。通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。

java.util.Collections#sort()
java.io.InputStream#skip()
java.io.InputStream#read()
java.util.AbstractList#indexOf()

10. 访问者模式

提供便捷的维护方式来操作一组对象。它使你在不改变操作对象的前提下,可以修改或扩展对象的行为。

例如集合,它可以包含不同类型的元素,访问者模式允许在不知道具体元素类型的前提下对集合元素进行一些操作。

javax.lang.model.element.Element and javax.lang.model.element.ElementVisitor
javax.lang.model.type.TypeMirror and javax.lang.model.type.TypeVisitor

11. 空对象模式

使用什么都不做的空对象来替代 NULL。

本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » JDK中的设计模式(二)行为型

Leave a Reply

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多