當前位置:編程學習大全網 - 源碼下載 - java 設計模式用了哪些

java 設計模式用了哪些

在JDK(Java Development Kit)類庫中,開發人員使用了大量設計模式,正因為如此,我們可以在不修改JDK源碼的前提下開發出自己的應用軟件,研究JDK類庫中的模式實例也不失為學習如何使用設計模式的壹個好方式。

創建型模式:

(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 (所有getXXX()方法)

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的所有實現類

(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() (支持淺克隆的類必須實現java.lang.Cloneable接口)

(5)?單例模式?(Singleton)

java.lang.Runtime#getRuntime()

java.awt.Desktop#getDesktop()

結構型模式:

(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 (提供了抽象層映射於實際的操作系統)

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)?職責鏈模式(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.pare()

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

  • 上一篇:Compiere翻譯成中文是什麽
  • 下一篇:1314文案簡短
  • copyright 2024編程學習大全網