在JDK(Java Development Kit)類庫中,開發(fā)人員使用了大量設(shè)計模式,正因為如此,我們可以在不修改JDK源碼的前提下開發(fā)出自己的應(yīng)用軟件,本文列出了部分JDK中的模式應(yīng)用實例,有興趣的同學(xué)可以深入研究,看看前Sun公司的開發(fā)人員是如何在實際框架開發(fā)中運用設(shè)計模式的,Sunny認(rèn)為,研究JDK類庫中的模式實例也不失為學(xué)習(xí)如何使用設(shè)計模式的一個好方式。
創(chuàng)建型模式:
(1)抽象工廠模式(Abstract Factory)
•java.util.Calendar#getInstance()
•java.util.Arrays#asList()
•java.util.ResourceBundle#getBundle()
•java.net.URL#openConnection()
•java.sql.DriverManager#getConnection()
•java.sql.Connection#createStatement()
•java.sql.Statement#executeQuery()
•java.text.NumberFormat#getInstance()
•java.lang.management.ManagementFactory(所有g(shù)etXXX()方法)
•java.nio.charset.Charset#forName()
•javax.xml.parsers.documentBuilderFactory#newInstance()
•javax.xml.transform.TransformerFactory#newInstance()
•javax.xml.xpath.XPathFactory#newInstance()
(2)建造者模式(Builder)
•java.lang.StringBuilder#append()
•java.lang.StringBuffer#append()
•java.nio.ByteBuffer#put()(CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer和DoubleBuffer與之類似)
•javax.swing.GroupLayout.Group#addComponent()
•java.sql.PreparedStatement
•java.lang.Appendable的所有實現(xiàn)類
(3)工廠方法模式(Factory Method)
•java.lang.Object#toString()(在其子類中可以覆蓋該方法)
•java.lang.Class#newInstance()
•java.lang.Integer#valueOf(String)(Boolean,Byte,Character,Short,Long,Float和Double與之類似)
•java.lang.Class#forName()
•java.lang.reflect.Array#newInstance()
•java.lang.reflect.Constructor#newInstance()
(4)原型模式(Prototype)
•java.lang.Object#clone()(支持淺克隆的類必須實現(xiàn)java.lang.Cloneable接口)
(5)單例模式(Singleton)
•java.lang.Runtime#getRuntime()
•java.awt.Desktop#getDesktop()
結(jié)構(gòu)型模式:
(1)適配器模式(Adapter)
•java.util.Arrays#asList()
•javax.swing.JTable(TableModel)
•java.io.InputStreamReader(InputStream)
•java.io.OutputStreamWriter(OutputStream)
•javax.xml.bind.annotation.adapters.XmlAdapter#marshal()
•javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal()
(2)橋接模式(Bridge)
•AWT(提供了抽象層映射于實際的操作系統(tǒng))
•JDBC
(3)組合模式(Composite)
•javax.swing.JComponent#add(Component)
•java.awt.Container#add(Component)
•java.util.Map#putAll(Map)
•java.util.List#addAll(Collection)
•java.util.Set#addAll(Collection)
(4)裝飾模式(Decorator)
•java.io.BufferedInputStream(InputStream)
•java.io.DataInputStream(InputStream)
•java.io.BufferedOutputStream(OutputStream)
•java.util.zip.ZipOutputStream(OutputStream)
•java.util.Collections#checked[List|Map|Set|SortedSet|SortedMap]()
(5)外觀模式(Facade)
•java.lang.Class
•javax.faces.webapp.FacesServlet
(6)享元模式(Flyweight)
•java.lang.Integer#valueOf(int)
•java.lang.Boolean#valueOf(boolean)
•java.lang.Byte#valueOf(byte)
•java.lang.Character#valueOf(char)
(7)代理模式(Proxy)
•java.lang.reflect.Proxy
•java.rmi.*
行為型模式:
(1)職責(zé)鏈模式(Chain of Responsibility)
•java.util.logging.Logger#log()
•javax.servlet.Filter#doFilter()
(2)命令模式(Command)
•java.lang.Runnable
•javax.swing.Action
(3)解釋器模式(Interpreter)
•java.util.Pattern
•java.text.Normalizer
•java.text.Format
•javax.el.ELResolver
(4)迭代器模式(Iterator)
•java.util.Iterator
•java.util.Enumeration
(5)中介者模式(Mediator)
•java.util.Timer(所有scheduleXXX()方法)
•java.util.concurrent.Executor#execute()
•java.util.concurrent.ExecutorService(invokeXXX()和submit()方法)
•java.util.concurrent.ScheduledExecutorService(所有scheduleXXX()方法)
•java.lang.reflect.Method#invoke()
(6)備忘錄模式(Memento)
•java.util.Date
•java.io.Serializable
•javax.faces.component.StateHolder
(7)觀察者模式(Observer)
•java.util.Observer/java.util.Observable
•java.util.EventListener(所有子類)
•javax.servlet.http.HttpSessionBindingListener
•javax.servlet.http.HttpSessionAttributeListener
•javax.faces.event.PhaseListener
(8)狀態(tài)模式(State)
•java.util.Iterator
•javax.faces.lifecycle.LifeCycle#execute()
(9)策略模式(Strategy)
•java.util.Comparator#compare()
•javax.servlet.http.HttpServlet
•javax.servlet.Filter#doFilter()
(10)模板方法模式(Template Method)
•java.io.InputStream,java.io.OutputStream,java.io.Reader和java.io.Writer的所有非抽象方法
•java.util.AbstractList,java.util.AbstractSet和java.util.AbstractMap的所有非抽象方法
•javax.servlet.http.HttpServlet#doXXX()
(11)訪問者模式(Visitor)
•javax.lang.model.element.AnnotationValue和AnnotationValueVisitor
•javax.lang.model.element.Element和ElementVisitor
•javax.lang.model.type.TypeMirror和TypeVisitor
以上就是長沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編針對“Java jdk中包含哪些設(shè)計模式”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。