23种设计模式在JDK中的例子
抽象工厂(类型recognizeable/界面造物方法返回一个抽象)
java.util.Calendar的#的getInstance()
java.util.Arrays#asList()
java.util.ResourceBundle#的getBundle()
#openConnection的java.net.URL()
java.sql.DriverManager来#的getConnection()
java.sql.Connection来#的createStatement()
java.sql.Statement#的executeQuery()
java.text.NumberFormat#的getInstance()
java.lang.management.ManagementFactory(所有的getXXX()方法)
java.nio.charset.Charset#的forName()
javax.xml.parsers.DocumentBuilderFactory#的newInstance()
javax.xml.transform.TransformerFactory#的newInstance()
javax.xml.xpath.XPathFactory#的newInstance()
生成器(本身recognizeable造物的实例方法返回)
java.lang.StringBuilder#追加()(不同步)
java.lang.StringBuffer#追加()(同步)
java.nio.ByteBuffer#把()(也CharBuffer的,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer和DoubleBuffer)
javax.swing.GroupLayout.Group#addComponent()
实现所有java.lang.Appendable
工厂方法(类型recognizeable造物的具体办法由返回)
java.lang.Object的#toString()方法(子类重载的一切)
java.lang.Class的#的newInstance()
为java.lang.Integer#方法valueOf(String)(也布尔,字节,字符,短,长,浮法和双)
#的java.lang.Class的forName()
java.lang.reflect.Array#的newInstance()
java.lang.reflect.Constructor#的newInstance()
原型(一recognizeable方法返回由造物不同属性相同的实例本身带)
java.lang.Object的#clone()方法(类必须实现java.lang.Cloneable)
辛格尔顿(即recognizeable方法返回由造物相同的实例(本身通常的)每次)
java.lang.Runtime#getRuntime()
java.awt.Desktop#getDesktop()
结构模式
适配器(一个实例的recognizeable造物服用方法不同的抽象/接口类型并返回自己的执行/另一个抽象/接口类型,装饰/覆盖给定的实例)
java.io.InputStreamReader(InputStream的)(返回一个阅读器)
java.io.OutputStreamWriter(OutputStream的)(返回一个作家)
javax.xml.bind.annotation.adapters.XmlAdapter#元帅()和#解组()
大桥(一实例的recognizeable造物服用方法不同的抽象/接口类型和返回一个类型实施自己的抽象/接口,它代表/使用给定的实例)
谁也没有想到呢。一个虚构的例子是新LinkedHashMap的(LinkedHashSet的<K>,列表<V>)返回一个不可修改的相关地图,不克隆项目,但使用它们。该java.util.Collections的#newSetFromMap()和singletonXXX()方法,但是很接近。
复合材料(附recognizeable实例由行为服用方法相同的抽象/接口类型)
java.util.Map的#的putAll(地图)
java.util.List的#addAll(征收)
为java.util.Set#addAll(征收)
java.nio.ByteBuffer#放(ByteBuffer的)(也CharBuffer的,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer和DoubleBuffer)
java.awt.Container#加入(组件)(几乎所有的Swing从而超过)
装饰(附recognizeable一个实例造物服用方法相同的抽象/接口类型)
子类的所有java.io.InputStream,OutputStream的,读者和作家有一个构造函数以一个相同类型的实例。
实现几乎所有的java.util.List,设置和地图具有构造纵观同类型的实例。
java.util.Collections中的checkedXXX(),synchronizedXXX()和unmodifiableXXX()方法。
javax.servlet.http.HttpServletRequestWrapper和HttpServletResponseWrapper
门面(使用情况的recognizeable由国内的行为方式不同的独立抽象/接口类型)
javax.faces.context.FacesContext,它在内部采用了一些其他人的抽象/接口类型LifeCycle的,ViewHandler中,NavigationHandler和许多)更多的最终用户无需担心它大约有(其中可重载不过,这样的注射。
javax.faces.context.ExternalContext,它在内部使用的ServletContext,HttpSession中,的HttpServletRequest,HttpServletResponse的,等等
享元(理念recognizeablemultiton“的造物方法返回一个缓存的实例,有点而”)
为java.lang.Integer#方法valueOf(int)的(还布尔,字节,字符,短,长,浮法和双)
代理(方法recognizeable的造物,它返回一个类型的实现给定的抽象/接口而这反过来又代表/使用一个不同类型的实现给定的抽象/接口)
java.lang.reflect.Proxy
的java.rmi.*,整个API的实际。
维基百科的例子是恕我直言有点差,延迟加载实际上已完全无关,在所有代理的模式。
行为模式
责任链(在recognizeable相同的方法由行为方法,(间接调用),另一个执行同样的抽象/接口类型的队列中)
java.util.logging.Logger的#日志()
javax.servlet.Filter接口#的doFilter()
命令(一recognizeable执行由行为方式在一个抽象/接口类型的其中一个方法中调用不同的抽象/接口类型已经封装了其创建命令执行期间)
实现所有java.lang.Runnable的
实现所有javax.swing.Action