上篇文章我们了解了JDK中创建型和结构型模式的运用, 那么接着我们一起看下行为型模式。
01
责任链模式
通过把请求从一个对象传递到链条中下一个对象的方式,直到请求被处理完毕,以实现对象间的解耦。java.util.logging.Logger#log()
javax.servlet.Filter#doFilter()
02
命令模式
将操作封装到对象内,以便存储,传递和返回。java.lang.Runnable
javax.swing.Action
03
解释器模式
这个模式通常定义了一个语言的语法,然后解析相应语法的语句。java.util.Pattern
java.text.Normalizer
java.text.Format
04
迭代器模式
提供一个一致的方法来顺序访问集合中的对象,这个方法与底层的集合的具体实现无关。java.util.Iterator
java.util.Enumeration
05
中介者模式
通过使用一个中间对象来进行消息分发以及减少类之间的直接依赖。java.util.Timer
java.util.concurrent.Executor#execute()
java.util.concurrent.ExecutorService#submit()
java.lang.reflect.Method#invoke()
06
备忘录模式
生成对象状态的一个快照,以便对象可以恢复原始状态而不用暴露自身的内容。Date对象通过自身内部的一个long值来实现备忘录模式。java.util.Date
java.io.Serializable
07
空对象模式
这个模式通过一个无意义的对象来代替没有对象这个状态。它使得你不用额外对空对象进行处理。java.util.Collections#emptyList()
java.util.Collections#emptyMap()
java.util.Collections#emptySet()
08
观察者模式
它使得一个对象可以灵活的将消息发送给感兴趣的对象。java.util.EventListener
javax.servlet.http.HttpSessionBindingListener
javax.servlet.http.HttpSessionAttributeListener
javax.faces.event.PhaseListener
09
状态模式
通过改变对象内部的状态,使得你可以在运行时动态改变一个对象的行为。java.util.Iterator
javax.faces.lifecycle.LifeCycle#execute()
10
Spring-涉及到的设计模式汇总
使用这个模式来将一组算法封装成一系列对象。通过传递这些对象可以灵活的改变程序的功能。java.util.Comparator#compare()
javax.servlet.http.HttpServlet
javax.servlet.Filter#doFilter()
11
模板方法模式
让子类可以重写方法的一部分,而不是整个重写,你可以控制子类需要重写那些操作。java.util.Collections#sort()
java.io.InputStream#skip()
java.io.InputStream#read()
java.util.AbstractList#indexOf()
12
访问者模式
提供一个方便的可维护的方式来操作一组对象。它使得你在不改变操作的对象前提下,可以修改或者扩展对象的行为。javax.lang.model.element.Element and javax.lang.model.element.ElementVisitor
javax.lang.model.type.TypeMirror and javax.lang.model.type.TypeVisitor
本文我们一起了解了在JDK中使用的到的设计模式:行为型模式,下一篇我们一起看看设计模式在Mybatis中的运用。
ps:IT技术、架构、职场、有意思的事儿,请关注我的公众号360linker