java - जावा के मूल पुस्तकालयों में गोफ डिजाइन पैटर्न के उदाहरण




oop design-patterns (5)

मैं गोफ जावा डिजाइन पैटर्न सीख रहा हूं और मैं उनके कुछ वास्तविक जीवन उदाहरण देखना चाहता हूं। जावा के मूल पुस्तकालयों में इन डिजाइन पैटर्न के कुछ अच्छे उदाहरण क्या हैं?


  1. संपूर्ण स्विंग ( Observer , Observer ) में पर्यवेक्षक पैटर्न
  2. स्विंग में एमवीसी भी
  3. एडाप्टर पैटर्न: FocusAdapter रीडर और आउटपुटस्ट्रीमवाइटर नोट: ContainerAdapter एडाप्टर, ComponentAdapter एडाप्टर, MouseAdapter एडाप्टर, की एडाप्टर, MouseAdapter एडाप्टर एडाप्टर नहीं हैं; वे वास्तव में शून्य वस्तुओं हैं। सूर्य द्वारा खराब नामकरण विकल्प।
  4. सजावटी पैटर्न ( BufferedInputStream FilterInputStream स्ट्रीम जैसी अन्य धाराओं को सजाने सकता है)
  5. एडब्ल्यूटी टूलकिट और स्विंग प्लग करने योग्य लुक-एंड-महसूस कक्षाओं के लिए सार फैक्ट्री पैटर्न
  6. java.lang.Runtime#getRuntime() सिंगलटन है
  7. मध्यस्थ पैटर्न के लिए ButtonGroup
  8. Action , AbstractAction कोड का उपयोग उसी कोड को निष्पादित करने के लिए विभिन्न दृश्य प्रस्तुतिकरणों के लिए किया जा सकता है -> कमांड पैटर्न
  9. फ्लाईवेट पैटर्न के लिए जेटीबल में आंतरिक स्ट्रिंग्स या सेलरेंडर (विभिन्न पूलों के बारे में भी सोचें - थ्रेड पूल, कनेक्शन पूल, ईजेबी ऑब्जेक्ट पूल - फ्लाईवेट वास्तव में साझा संसाधनों के प्रबंधन के बारे में है)
  10. जावा 1.0 इवेंट मॉडल उत्तरदायित्व की श्रृंखला का एक उदाहरण है, जैसे सर्वलेट फ़िल्टर।
  11. संग्रह फ्रेमवर्क में इटरेटर पैटर्न
  12. एडब्ल्यूटी / स्विंग में नेस्टेड कंटेनर समग्र पैटर्न का उपयोग करते हैं
  13. एडब्ल्यूटी / स्विंग में लेआउट प्रबंधक रणनीति का एक उदाहरण हैं

और मुझे लगता है कि कई और


  1. फ्लाईवेट का उपयोग बाइट, शॉर्ट, इंटेगर, लांग एंड स्ट्रिंग के कुछ मूल्यों के साथ किया जाता है।
  2. फेकाडे का प्रयोग कई जगहों पर किया जाता है लेकिन सबसे स्पष्ट स्क्रिप्टिंग इंटरफेस है।
  3. सिंगलटन - जावा.लांग। रनटाइम दिमाग में आता है।
  4. सार फैक्टरी - स्क्रिप्टिंग और जेडीबीसी एपीआई भी।
  5. कमांड - टेक्स्टकंपोनेंट का पूर्ववत / फिर से करें।
  6. इंटरप्रिटर - रेगेक्स (java.util.regex। ) और एसक्यूएल (java.sql। ) एपीआई।
  7. प्रोटोटाइप - यदि यह गिनती है तो 100% निश्चित नहीं है, लेकिन मुझे लगता है कि इस उद्देश्य के लिए मुझे लगता है clone() विधि का उपयोग किया जा सकता है।

आरएमआई प्रॉक्सी पर आधारित है।

गोफ में 23 पैटर्न में से अधिकांश के लिए उद्धृत करना संभव होना चाहिए:

  1. सार फैक्ट्री: java.sql इंटरफेस सभी को जेडीबीसी जेएआर से ड्राइवरों के पंजीकृत होने पर उनके ठोस कार्यान्वयन मिलते हैं।
  2. बिल्डर: java.lang.Stringbuilder।
  3. फैक्टरी विधि: एक्सएमएल कारखानों, दूसरों के बीच।
  4. प्रोटोटाइप: शायद क्लोन (), लेकिन मुझे यकीन नहीं है कि मैं इसे खरीद रहा हूं।
  5. सिंगलटन: जावा.लांग। सिस्टम
  6. एडाप्टर: java.awt.event में एडाप्टर कक्षाएं, उदाहरण के लिए, विंडो एडाप्टर।
  7. ब्रिज: java.util में संग्रह कक्षाएं। ArrayList द्वारा लागू सूची।
  8. समग्र: java.awt। java.awt.Component + java.awt.Container
  9. सजावट: सभी java.io पैकेज पर।
  10. फेकाडे: ExternalContext कॉन्टेक्स्ट कुकी, सत्र स्कोप और इसी तरह के संचालन करने के लिए एक मुखौटा के रूप में व्यवहार करता है।
  11. फ्लाईवेट: इंटीजर, कैरेक्टर इत्यादि।
  12. प्रॉक्सी: java.rmi पैकेज
  13. जिम्मेदारी की श्रृंखला: सर्वलेट फिल्टर
  14. कमांड: स्विंग मेनू आइटम
  15. इंटरप्रेटर: सीधे जेडीके में नहीं, लेकिन जावासीसी निश्चित रूप से इसका उपयोग करता है।
  16. Iterator: java.util.Iterator इंटरफ़ेस; उससे स्पष्ट नहीं हो सकता है।
  17. मध्यस्थ: जेएमएस?
  18. स्मृति चिन्ह:
  19. पर्यवेक्षक: java.util.Observer/Observable (बुरी तरह से किया गया, यद्यपि)
  20. राज्य:
  21. रणनीति:
  22. टेम्पलेट:
  23. आगंतुक:

मैं 23 में से 10 में जावा के उदाहरणों के बारे में नहीं सोच सकता, लेकिन मैं देखूंगा कि मैं कल बेहतर कर सकता हूं या नहीं। यही संपादन के लिए है।


भले ही मैं इस के साथ एक टूटी हुई घड़ी की तरह हूं, जावा एक्सएमएल एपीआई फैक्ट्री का बहुत उपयोग करता है। मेरा मतलब है बस इसे देखो:

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(source);
String title = XPathFactory.newInstance().newXPath().evaluate("//title", doc);

...इत्यादि इत्यादि।

इसके अतिरिक्त विभिन्न बफर (स्ट्रिंगबफर, बाइटबफर, स्ट्रिंगबिल्डर) बिल्डर का उपयोग करते हैं।


java.util.Collection # Iterator फैक्टरी विधि का एक अच्छा उदाहरण है। आपके द्वारा उपयोग किए जाने वाले संग्रह के ठोस उप-वर्ग के आधार पर, यह एक इटरेटर कार्यान्वयन बनाएगा। चूंकि फैक्टरी सुपरक्लास (संग्रह) और इटरेटर दोनों इंटरफेस बनाए जाते हैं, इसलिए कभी-कभी सार फैक्ट्री के साथ भ्रमित होता है। स्वीकार्य उत्तर (बलुससी) में सार Factory अधिकांश उदाहरण Factory उदाहरण हैं, फैक्टरी विधि का सरलीकृत संस्करण, जो मूल गोफ पैटर्न का हिस्सा नहीं है। फैक्टरी में फैक्टरी वर्ग पदानुक्रम ध्वस्त हो गया है और कारखाने को वापस करने के लिए उत्पाद का चयन करने के लिए अन्य साधनों का उपयोग करता है।

  • सार फैक्टरी

एक अमूर्त कारखाने में कई फैक्ट्री विधियां होती हैं, प्रत्येक एक अलग उत्पाद बनाती है। एक कारखाने द्वारा उत्पादित उत्पादों का एक साथ उपयोग किया जाना है (आपका प्रिंटर और कारतूस बेहतर (सार) कारखाने से बेहतर है)। जैसा कि एडब्ल्यूटी जीयूआई घटकों के परिवारों के ऊपर दिए गए उत्तरों में बताया गया है, प्लेटफॉर्म से प्लेटफ़ॉर्म तक भिन्न, इसका एक उदाहरण है (हालांकि इसका कार्यान्वयन गोफ में वर्णित संरचना से अलग है)।





java-api