जवाबों:
आप विकिपीडिया में बहुत सारे डिज़ाइन पैटर्न का अवलोकन पा सकते हैं । इसमें यह भी उल्लेख किया गया है कि कौन से पैटर्न का उल्लेख गोएफ द्वारा किया गया है। मैं उन्हें यहाँ जोड़ूंगा और जावा एसई और जावा ईई एपीआई दोनों में पाया जा सकता है कि जितना संभव हो उतना पैटर्न कार्यान्वयन को लागू करने का प्रयास करें।
javax.xml.parsers.DocumentBuilderFactory#newInstance()
javax.xml.transform.TransformerFactory#newInstance()
javax.xml.xpath.XPathFactory#newInstance()
java.lang.StringBuilder#append()
(Unsynchronized)java.lang.StringBuffer#append()
(सिंक्रनाइज़)java.nio.ByteBuffer#put()
(यह भी पर CharBuffer
, ShortBuffer
, IntBuffer
, LongBuffer
, FloatBuffer
और DoubleBuffer
)javax.swing.GroupLayout.Group#addComponent()
java.lang.Appendable
java.util.stream.Stream.Builder
java.util.Calendar#getInstance()
java.util.ResourceBundle#getBundle()
java.text.NumberFormat#getInstance()
java.nio.charset.Charset#forName()
java.net.URLStreamHandlerFactory#createURLStreamHandler(String)
(प्रति प्रोटोकॉल सिंगलटन ऑब्जेक्ट लौटाता है)java.util.EnumSet#of()
javax.xml.bind.JAXBContext#createMarshaller()
और इसी तरह के अन्य तरीकेjava.lang.Object#clone()
(वर्ग को लागू करना होगा java.lang.Cloneable
)java.util.Arrays#asList()
java.util.Collections#list()
java.util.Collections#enumeration()
java.io.InputStreamReader(InputStream)
(रिटर्न ए Reader
)java.io.OutputStreamWriter(OutputStream)
(रिटर्न ए Writer
)javax.xml.bind.annotation.adapters.XmlAdapter#marshal()
तथा #unmarshal()
new LinkedHashMap(LinkedHashSet<K>, List<V>)
जो एक अनमॉडिफ़ाइड लिंक्ड मैप को लौटाता है जो आइटमों को क्लोन नहीं करता है, लेकिन उनका उपयोग करता है। java.util.Collections#newSetFromMap()
और singletonXXX()
तरीकों हालांकि करीब आता है।java.awt.Container#add(Component)
(व्यावहारिक रूप से सभी स्विंग इस प्रकार)javax.faces.component.UIComponent#getChildren()
(व्यावहारिक रूप से इस प्रकार JSF UI पर सभी)java.io.InputStream
, OutputStream
, Reader
और Writer
एक निर्माता एक ही प्रकार का एक उदाहरण ले जा रहा है।java.util.Collections
, को checkedXXX()
, synchronizedXXX()
और unmodifiableXXX()
तरीकों।javax.servlet.http.HttpServletRequestWrapper
तथा HttpServletResponseWrapper
javax.swing.JScrollPane
javax.faces.context.FacesContext
, यह आंतरिक रूप से दूसरों के बीच सार / इंटरफ़ेस प्रकार का उपयोग करता है LifeCycle
, ViewHandler
, NavigationHandler
enduser इसके बारे में चिंता (जो इंजेक्शन द्वारा तथापि ओवरराइड कर रहे हैं) है कि बिना और कई और अधिक।javax.faces.context.ExternalContext
, जो आंतरिक रूप से उपयोग करता है ServletContext
,HttpSession
, HttpServletRequest
, HttpServletResponse
, आदिjava.lang.Integer#valueOf(int)
(यह भी पर Boolean
, Byte
, Character
,Short
, Long
और BigDecimal
)java.lang.reflect.Proxy
java.rmi.*
javax.ejb.EJB
( यहां स्पष्टीकरण )javax.inject.Inject
( यहां स्पष्टीकरण )javax.persistence.PersistenceContext
java.lang.Runnable
javax.swing.Action
java.util.Pattern
java.text.Normalizer
java.text.Format
javax.el.ELResolver
java.util.Iterator
(इस प्रकार दूसरों के बीच भी) सभी कार्यान्वयनjava.util.Scanner
!)।java.util.Enumeration
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()
java.util.Date
(सेटर विधियां ऐसा करती हैं, जिसे Date
आंतरिक रूप से एक long
मूल्य द्वारा दर्शाया जाता है )java.io.Serializable
javax.faces.component.StateHolder
java.util.Observer
/ java.util.Observable
(शायद ही कभी वास्तविक दुनिया में इस्तेमाल किया जाता है)java.util.EventListener
(व्यावहारिक रूप से इस प्रकार स्विंग भर में)javax.servlet.http.HttpSessionBindingListener
javax.servlet.http.HttpSessionAttributeListener
javax.faces.event.PhaseListener
javax.faces.lifecycle.LifeCycle#execute()
(द्वारा नियंत्रित FacesServlet
, व्यवहार JSF जीवन चक्र के वर्तमान चरण (राज्य) पर निर्भर है)java.util.Comparator#compare()
, दूसरों के बीच द्वारा निष्पादित Collections#sort()
।javax.servlet.http.HttpServlet
, service()
और सभी doXXX()
विधियों को लेते हैं HttpServletRequest
और HttpServletResponse
कार्यान्वयनकर्ता को उन्हें संसाधित करना पड़ता है (और उदाहरण के चर के रूप में उन्हें पकड़ना नहीं है!)।javax.servlet.Filter#doFilter()
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()
डिफ़ॉल्ट रूप से सभी विधियाँ प्रतिक्रिया के लिए HTTP 405 "Method Not Allowed" त्रुटि भेजती हैं। आप उनमें से किसी को भी लागू करने के लिए स्वतंत्र हैं।Observable
, Observer
)ContainerAdapter
, ComponentAdapter
, FocusAdapter
, KeyAdapter
, MouseAdapter
कर रहे हैं नहीं एडेप्टर; वे वास्तव में अशक्त वस्तुएं हैं। सूर्य द्वारा खराब नामकरण पसंद।BufferedInputStream
जैसे अन्य धाराओं को सजा सकते हैं FilterInputStream
)java.lang.Runtime#getRuntime()
सिंगलटन हैButtonGroup
मध्यस्थ पैटर्न के लिएAction
, AbstractAction
एक ही कोड -> कमांड पैटर्न को निष्पादित करने के लिए विभिन्न दृश्य प्रतिनिधित्व के लिए उपयोग किया जा सकता हैऔर कई और मुझे लगता है
clone()
है कि इस उद्देश्य के लिए विधि का उपयोग किया जा सकता है।java.awt
और java.swing
पैकेज हो सकता है। वास्तव में, वे लगभग समान आंतरिक विशेषताओं को साझा करते हैं और बाहरी विशेषता अलग-अलग यूआई घटक हैं जो वे यूआई के रूप में रखते हैं।
RMI प्रॉक्सी पर आधारित है।
गोफ में 23 पैटर्न में से अधिकांश के लिए एक का हवाला देना संभव होना चाहिए:
मैं जावा में 23 में से 10 के लिए उदाहरणों के बारे में नहीं सोच सकता, लेकिन मैं देखूंगा कि क्या मैं कल बेहतर कर सकता हूं। यही संपादित करने के लिए है।
भले ही मैं इस एक के साथ एक टूटी हुई घड़ी की तरह हूँ, जावा एक्सएमएल एपीआई फैक्टरी का बहुत उपयोग करता है। मेरा मतलब है कि बस इसे देखो:
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(source);
String title = XPathFactory.newInstance().newXPath().evaluate("//title", doc);
...इत्यादि इत्यादि।
इसके अतिरिक्त विभिन्न बफ़र (StringBuffer, ByteBuffer, StringBuilder) बिल्डर का उपयोग करते हैं।
java.util.Collection # Iterator फैक्ट्री मेथड का एक अच्छा उदाहरण है। आपके द्वारा उपयोग किए जाने वाले संग्रह के ठोस उपवर्ग के आधार पर, यह एक इटरेटर कार्यान्वयन बना देगा। क्योंकि फैक्ट्री सुपरक्लास (कलेक्शन) और आईटरेटर दोनों ही इंटरफेस हैं, यह कभी-कभी एब्सट्रैक्ट के साथ भ्रमित होता है। स्वीकृत उत्तर (BalusC) में AbstractFactory के लिए अधिकांश उदाहरण फ़ैक्टरी के उदाहरण हैं , फ़ैक्टरी विधि का एक सरलीकृत संस्करण, जो मूल GoF पैटर्न का हिस्सा नहीं है। फेसरी में फैक्ट्री वर्ग पदानुक्रम ढह गया है और उत्पाद वापस करने के लिए उत्पाद का चयन करने के लिए कारखाने अन्य साधनों का उपयोग करते हैं।
एक अमूर्त कारखाने में कई कारखाने विधियां हैं, प्रत्येक एक अलग उत्पाद बनाती है। एक कारखाने द्वारा उत्पादित उत्पादों को एक साथ उपयोग करने का इरादा है (आपके प्रिंटर और कारतूस एक ही (अमूर्त) कारखाने से बेहतर होंगे)। जैसा कि AWT GUI घटकों के परिवारों के ऊपर के उत्तर में उल्लेख किया गया है, मंच से मंच तक भिन्न, इसका एक उदाहरण है (हालांकि इसका कार्यान्वयन गोफ में वर्णित संरचना से भिन्न है)।
javax.lang.model.element
आगंतुकों को परिभाषित करता है;) मैं काफी यकीन नहीं है कि नहीं कर रहा हूँdoXXX
औरdoFilter
"रणनीति" कर रहे हैं।