Design Pattern in JDK
Behavioral(行为模式)
Chain of responsibility:
- java.util.logging.Logger#log()
- javax.servlet.Filter#doFilter()
Observer:
- java.util.EventListener
- javax.servlet.http.HttpSessionBindingListener
- javax.servlet.http.HttpSessionAttributeListener
State:
- java.util.Iterator
Strategy:
- java.util.Comparator#compare()
- javax.servlet.http.HttpServlet
- javax.servlet.Filter#doFilter()
Template:
- java.util.Collections#sort()
- java.io.InputStream#skip()
- java.io.InputStream#read()
Command:
- java.lang.Runnable
Interpreter:
- java.util.Pattern
- java.text.Format
Iterator:
- java.util.Iterator
- java.util.Enumeration
Mediator:
- java.util.Timer
- java.util.concurrent.Executor#execute()
- java.util.concurrent.ExecutorService#submit()
- java.lang.reflect.Method#invoke()
Memento:
- java.util.Date
- java.io.Serializable
Null Object:
- java.util.Collections#emptyList()
- java.util.Collections#emptyMap()
- java.util.Collections#emptySet()
Visitor:
- javax.lang.model.element.Element 和javax.lang.model.element.ElementVisitor
- javax.lang.model.type.TypeMirror 和javax.lang.model.type.TypeVisitor
Creational(创建模式)
Singleton:
- java.lang.Runtime#getRuntime()
Factory:
- java.lang.Proxy#newProxyInstance()
- java.lang.Object#toString()
- java.lang.Class#newInstance()
- java.lang.Class#forName()
Prototype:
- java.lang.Object#clone()
- java.lang.Cloneable
Abstract factory:
- java.util.Calendar#getInstance()
- java.util.Arrays#asList()
Builder:
- java.lang.StringBuilder#append()
- java.lang.StringBuffer#append()
- java.sql.PreparedStatement
Structural(结构模式)
Decorator:
- java.io.BufferedInputStream(InputStream)
- java.io.DataInputStream(InputStream)
- java.io.BufferedOutputStream(OutputStream)
Proxy:
- java.lang.reflect.Proxy
- RMI
Bridge:
- AWT (提供了抽象层映射于实际的操作系统)
- JDBC
Composite:
- java.util.Map#putAll(Map)
- java.util.List#addAll(Collection)
- java.util.Set#addAll(Collection)
Facade:
- java.lang.Class
Flyweight:
- java.lang.Integer#valueOf(int)
- java.lang.Boolean#valueOf(boolean)
- java.lang.Byte#valueOf(byte)
- java.lang.Character#valueOf(char)
Adapter:
- java.util.Arrays#asList()
- java.io.InputStreamReader(InputStream)
- java.io.OutputStreamWriter(OutputStream)
浙公网安备 33010602011771号