18

मैंने हाल ही में वास्तव में सचमुच निर्भरता इंजेक्शन और सजावट डिजाइन पैटर्न के आश्चर्य को गले लगा लिया है और इसे पूरे स्थान पर उपयोग कर रहा हूं।सजावटी पैटर्न के लिए आप किस नामकरण सम्मेलन का उपयोग करते हैं?

हालांकि यह आश्चर्यजनक है कि मुझे एक ऐसी चीज है जिसमें मुझे कठिनाई हो रही है, जो मेरे सजावटी वर्गों का नाम दे रहा है, इसलिए मैं यह जानना चाहूंगा कि दूसरे क्या करते हैं। क्या आप हमेशा सजावट शब्द जोड़ते हैं? क्या आप इंटरफ़ेस का नाम सजाते हैं? क्या उन्हें अपना नामस्थान मिलता है?

आप लोग क्या करते हैं?

उत्तर

2

आम तौर पर पैटर्न किसी ऑब्जेक्ट (बनाम ऑब्जेक्ट्स का संग्रह) में encapsulated है, तो इस मामले में Decorator का उपयोग प्रत्यय के रूप में कक्षा में पैटर्न नाम शामिल करना स्पष्ट और आसान है। यह प्रॉक्सी, सजावटी, कारखानों, एडेप्टर इत्यादि के लिए अच्छी तरह से काम करता है .. लेकिन अन्य पैटर्न के लिए काम नहीं करता है जहां पुल जैसे पैटर्न के कार्यान्वयन में ऑब्जेक्ट्स के समूह की आवश्यकता होती है (यानी कौन सा ऑब्जेक्ट एब्रोपेट्री से -ब्रिज प्रत्यय लेता है?)

17

मैं डिजाइन पैटर्न नामों का उपयोग करने से बचता हूं। मुझे लगता है कि यह कहीं भी दस्तावेज़ीकरण में है। यह क्या करता है या प्रतिनिधित्व करता है के बाद सजावटी वर्ग/समारोह का नाम दें। तथ्य यह है कि यह सजाने या पुलों या लिंक या प्रॉक्सी या फिर से प्रतिनिधित्व करता है थोड़ा परिणाम है।

हर बार जब आप स्ट्रिंग का नाम देते हैं, तो क्या आप स्ट्रिंग प्रत्यय जोड़ते हैं? मुझे hgrn की तरह लगता है, और यह कुछ है जो मैं कोशिश करता हूं और इससे बचता हूं।

+0

'hgrnNotation' == हंगरी नोटेशन, भ्रमित के लिए। –

5

इसे कॉल करें जो इसे करता है।

मेरे पास आईप्रिंटर इंटरफ़ेस के लिए सजावट का एक गुच्छा है। वे कहा जाता है:

  • PrintDisasterRecovery - अपवाद निपटने
  • PrintQueuer - बनाता है यह एक async कॉल

ये लोग दोनों PrintDecorator से विरासत है, इसलिए यदि किसी को कवर के नीचे peeks वे देख सकते हैं क्या चल रहा है।

11

जावा एपीआई के आईओ फ्रेमवर्क से एक उदाहरण लें। यह सजावटी पैटर्न का व्यापक रूप से उपयोग करता है लेकिन कक्षाओं के नाम इसे प्रतिबिंबित नहीं करते हैं। उदाहरण के लिए एक BufferedReader एक फ़ाइल रीडर को सजाने सकता है लेकिन उनके नाम के बाद उनका नाम - पाठक।

नाम पर सजावटी जोड़ना और समस्याएं पैदा करेगा यदि आप अन्य वर्गों को भी शामिल करते हैं जो अक्सर कक्षाओं में शामिल होते हैं। आप MyDecoratorStrategyComponent नामक कक्षा के साथ समाप्त हो सकते हैं।

+6

... या यहां तक ​​कि एक सार SingletonProxyFactoryBean - http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html – blank

संबंधित मुद्दे