涓嬮潰鏄疛DK涓湁鍏?3涓粡鍏歌璁℃ā寮忕殑紺轟緥錛屽湪stakeoverflow涔熸湁鐩稿簲鐨勮璁猴細
http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns
Structural錛堢粨鏋勬ā寮忥級
鎶婁竴涓帴鍙f垨鏄被鍙樻垚鍙﹀涓縐嶃?
- 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()
Bridge:
鎶婃娊璞″拰瀹炵幇瑙h棔錛屼簬鏄帴鍙e拰瀹炵幇鍙湪瀹屽叏鐙珛寮鏉ャ?/p>
- AWT (鎻愪緵浜嗘娊璞″眰鏄犲皠浜庡疄闄呯殑鎿嶄綔緋葷粺)
- JDBC
Composite:
璁╀嬌鐢ㄨ呮妸鍗曠嫭鐨勫璞″拰緇勫悎瀵硅薄娣風敤銆?/p>
- 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)
Decorator:
涓轟竴涓璞″姩鎬佺殑鍔犱笂涓緋誨垪鐨勫姩浣滐紝鑰屼笉闇瑕佸洜涓鴻繖浜涘姩浣滅殑涓嶅悓鑰屼駭鐢熷ぇ閲忕殑緇ф壙綾匯傝繖涓ā寮忓湪JDK涓嚑涔庢棤澶勪笉鍦紝鎵浠ワ紝涓嬮潰鐨勫垪琛ㄥ彧鏄竴浜涘吀鍨嬬殑銆?/p>
- 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]()
Facade:
鐢ㄤ竴涓畝鍗曠殑鎺ュ彛鍖呯姸涓緇勭粍浠訛紝鎺ュ彛錛屾娊璞℃垨鏄瓙緋葷粺銆?/p>
- java.lang.Class
- javax.faces.webapp.FacesServlet
Flyweight:
鏈夋晥鐜囧湴瀛樺偍澶ч噺鐨勫皬鐨勫璞°?/p>
- java.lang.Integer#valueOf(int)
- java.lang.Boolean#valueOf(boolean)
- java.lang.Byte#valueOf(byte)
- java.lang.Character#valueOf(char)
Proxy:
鐢ㄤ竴涓畝鍗曠殑瀵硅薄鏉ヤ唬鏇夸竴涓鏉傜殑瀵硅薄銆?/p>
- java.lang.reflect.Proxy
- RMI
Creational錛堝垱寤烘ā寮忥級
鍒涘緩涓緇勬湁鍏寵仈鐨勫璞″疄渚嬨傝繖涓ā寮忓湪JDK涓篃鏄浉褰撶殑甯歌錛岃繕鏈夊緢澶氱殑framework渚嬪Spring銆傛垜浠緢瀹規槗鎵懼埌榪欐牱鐨勫疄渚嬨?
- java.util.Calendar#getInstance()
- java.util.Arrays#asList()
- java.util.ResourceBundle#getBundle()
- java.sql.DriverManager#getConnection()
- java.sql.Connection#createStatement()
- java.sql.Statement#executeQuery()
- java.text.NumberFormat#getInstance()
- javax.xml.transform.TransformerFactory#newInstance()
Builder:
涓昏鐢ㄦ潵綆鍖栦竴涓鏉傜殑瀵硅薄鐨勫垱寤恒傝繖涓ā寮忎篃鍙互鐢ㄦ潵瀹炵幇涓涓?nbsp;Fluent Interface銆?/p>
- java.lang.StringBuilder#append()
- java.lang.StringBuffer#append()
- java.sql.PreparedStatement
- javax.swing.GroupLayout.Group#addComponent()
Factory:
綆鍗曟潵璇達紝鎸夌収闇姹傝繑鍥炰竴涓被鍨嬬殑瀹炰緥銆?/p>
- java.lang.Proxy#newProxyInstance()
- java.lang.Object#toString()
- java.lang.Class#newInstance()
- java.lang.reflect.Array#newInstance()
- java.lang.reflect.Constructor#newInstance()
- java.lang.Boolean#valueOf(String)
- java.lang.Class#forName()
Prototype:
浣跨敤鑷繁鐨勫疄渚嬪垱寤哄彟涓涓疄渚嬨傛湁鏃跺欙紝鍒涘緩涓涓疄渚嬬劧鍚庡啀鎶婂凡鏈夊疄渚嬬殑鍊兼嫹璐濊繃鍘伙紝鏄竴涓緢澶嶆潅鐨勫姩浣溿傛墍浠ワ紝浣跨敤榪欎釜妯″紡鍙互閬垮厤榪欐牱鐨勫鏉傛с?/p>
- java.lang.Object#clone()
- java.lang.Cloneable
Singleton:
鍙厑璁鎬竴涓疄渚嬨傚湪 Effective Java涓緩璁嬌鐢‥mun.
- java.lang.Runtime#getRuntime()
- java.awt.Toolkit#getDefaultToolkit()
- java.awt.GraphicsEnvironment#getLocalGraphicsEnvironment()
- java.awt.Desktop#getDesktop()
Behavioral(琛屼負妯″紡)
Chain of responsibility:
鎶婁竴涓璞″湪涓涓摼鎺ヤ紶閫掔洿鍒拌澶勭悊銆傚湪榪欎釜閾句笂鐨勬墍鏈夌殑瀵硅薄鏈夌浉鍚岀殑鎺ュ彛錛堟娊璞$被錛変絾鍗存湁涓嶅悓鐨勫疄鐜般?/p>
- java.util.logging.Logger#log()
- javax.servlet.Filter#doFilter()
Command:
鎶婁竴涓垨涓浜涘懡浠ゅ皝瑁呭埌涓涓璞′腑銆?/p>
- java.lang.Runnable
- javax.swing.Action
Interpreter:
涓涓娉曡В閲婂櫒鐨勬ā寮忋?/p>
- java.util.Pattern
- java.text.Normalizer
- java.text.Format
Iterator:
鎻愪緵涓縐嶄竴鑷寸殑鏂規硶鏉ラ『搴忛亶鍘嗕竴涓鍣ㄤ腑鐨勬墍鏈夊厓绱犮?/p>
- java.util.Iterator
- java.util.Enumeration
Mediator:
鐢ㄦ潵鍑忓皯瀵硅薄鍗曠殑鐩存帴閫氳鐨勪緷璧栧叧緋匯備嬌鐢ㄤ竴涓腑闂寸被鏉ョ鐞嗘秷鎭殑鏂瑰悜銆?/p>
- java.util.Timer
- java.util.concurrent.Executor#execute()
- java.util.concurrent.ExecutorService#submit()
- java.lang.reflect.Method#invoke()
Memento:
緇欎竴涓璞$殑鐘舵佸仛涓涓揩鐓с侱ate綾誨湪鍐呴儴浣跨敤浜嗕竴涓猯ong鍨嬫潵鍋氳繖涓揩鐓с?/p>
- java.util.Date
- java.io.Serializable
Null Object:
榪欎釜妯″紡鐢ㄦ潵瑙e喅濡傛灉涓涓狢ollection涓病鏈夊厓绱犵殑鎯呭喌銆?/p>
- java.util.Collections#emptyList()
- java.util.Collections#emptyMap()
- java.util.Collections#emptySet()
Observer:
鍏佽涓涓璞″悜鎵鏈夌殑渚﹀惉鐨勫璞″箍鎾嚜宸辯殑娑堟伅鎴栦簨浠躲?/p>
- java.util.EventListener
- javax.servlet.http.HttpSessionBindingListener
- javax.servlet.http.HttpSessionAttributeListener
- javax.faces.event.PhaseListener
State:
榪欎釜妯″紡鍏佽浣犲彲浠ュ湪榪愯鏃跺緢瀹規槗鍦版牴鎹嚜韜唴閮ㄧ殑鐘舵佹敼鍙樺璞$殑琛屼負銆?/p>
- java.util.Iterator
- javax.faces.lifecycle.LifeCycle#execute()
Strategy:
瀹氫箟涓緇勭畻娉曪紝騫舵妸鍏跺皝瑁呭埌涓涓璞′腑銆傜劧鍚庡湪榪愯鏃訛紝鍙互鐏墊椿鐨勪嬌鐢ㄥ叾涓殑涓涓畻娉曘?/p>
- java.util.Comparator#compare()
- javax.servlet.http.HttpServlet
- javax.servlet.Filter#doFilter()
Template method:
鍏佽瀛愮被閲嶈澆閮ㄥ垎鐖剁被鑰屼笉闇瑕佸畬鍏ㄩ噸鍐欍?/p>
- java.util.Collections#sort()
- java.io.InputStream#skip()
- java.io.InputStream#read()
- java.util.AbstractList#indexOf()
Visitor:
浣滅敤浜庢煇涓璞$兢涓悇涓璞$殑鎿嶄綔. 瀹冨彲浠ヤ嬌浣犲湪涓嶆敼鍙樿繖浜涘璞℃湰韜殑鎯呭喌涓?瀹氫箟浣滅敤浜庤繖浜涘璞$殑鏂版搷浣?
- javax.lang.model.element.Element 鍜宩avax.lang.model.element.ElementVisitor
- javax.lang.model.type.TypeMirror 鍜宩avax.lang.model.type.TypeVisitor
錛堝叏鏂囧畬錛?/p>
錛堣漿杞芥湰绔欐枃绔犺娉ㄦ槑浣滆呭拰鍑哄 閰峰3 – CoolShell.cn 錛岃鍕跨敤浜庝換浣曞晢涓氱敤閫旓級