कुछ कारणों से प्रबंधक कक्षाएं खराब वास्तुकला का संकेत हो सकती हैं:
अर्थहीन पहचानकर्ता
नाम FooManagerकुछ भी नहीं कहता है कि वर्ग वास्तव में क्या करता है , सिवाय इसके कि इसमें किसी भी तरह से Fooउदाहरण शामिल हैं । कक्षा को अधिक सार्थक नाम देने से इसका वास्तविक उद्देश्य स्पष्ट हो जाता है, जिससे संभवतः रिफैक्टरिंग को बढ़ावा मिलेगा।
आंशिक जिम्मेदारियां
एकल जिम्मेदारी सिद्धांत के अनुसार, प्रत्येक कोड इकाई को बिल्कुल एक ही उद्देश्य पूरा करना चाहिए। एक प्रबंधक के साथ, आप कृत्रिम रूप से उस जिम्मेदारी को विभाजित कर सकते हैं।
ResourceManagerउस पर विचार करें , जो Resourceउदाहरणों के जीवनकाल और पहुंच को समन्वयित करता है । किसी एप्लिकेशन के पास एक एकल ResourceManagerहै जिसके माध्यम से वह Resourceइंस्टेंस प्राप्त करता है । इस मामले में कोई वास्तविक कारण नहीं है कि एक ResourceManagerउदाहरण के कार्य को Resourceकक्षा में स्थिर तरीकों से क्यों नहीं परोसा जा सकता है ।
असंरचित अमूर्तन
अक्सर एक प्रबंधक को उन वस्तुओं के साथ अंतर्निहित समस्याओं को दूर करने के लिए पेश किया जाता है जो इसे प्रबंधित करता है। यही कारण है कि प्रबंधकों ने खराब डिज़ाइन किए गए सिस्टम के लिए बैंड-एड्स के रूप में दुरुपयोग करने के लिए खुद को उधार दिया। अमूर्त एक जटिल प्रणाली को सरल बनाने का एक अच्छा तरीका है, लेकिन "प्रबंधक" नाम कोई सार नहीं प्रदान करता है क्योंकि यह अमूर्त की संरचना का प्रतिनिधित्व करता है। क्या यह वास्तव में एक कारखाना है, या एक प्रॉक्सी, या कुछ और?
बेशक, प्रबंधकों का उपयोग केवल बुराई से अधिक, उन्हीं कारणों से किया जा सकता है। एक- EventManagerजो वास्तव में Dispatcherस्रोतों से एक घटना है और उन्हें रुचि के लक्ष्यों के लिए भेजती है। इस मामले में यह घटनाओं को प्राप्त करने और भेजने की जिम्मेदारी को अलग करने के लिए समझ में आता है, क्योंकि एक व्यक्ति Eventसिर्फ एक संदेश है, जिसमें सिद्ध या गंतव्य की कोई धारणा नहीं है।
हम एक लिखने Dispatcherकी Eventमूलतः एक ही कारण है कि हम एक लिखने के लिए उदाहरण हैं GarbageCollectorया एक Factory:
एक प्रबंधक जानता है कि उसके पेलोड को क्या जानना चाहिए।
मुझे लगता है कि, एक प्रबंधक वर्ग बनाने के लिए सबसे अच्छा औचित्य है। जब आपके पास कुछ "पेलोड" वस्तु होती है जो एक मूल्य की तरह व्यवहार करती है, तो इसे यथासंभव बेवकूफ होना चाहिए ताकि समग्र प्रणाली लचीली बनी रहे। व्यक्तिगत उदाहरणों को अर्थ प्रदान करने के लिए, आप एक प्रबंधक बनाते हैं जो उन उदाहरणों को एक सार्थक तरीके से समन्वयित करता है । किसी भी अन्य स्थिति में, प्रबंधक अनावश्यक हैं।
Of course, mangers can be good. An obvious example is an EventManagerकि यह सब वहीं समझाता है। अवधारणा का दुरुपयोग खराब वास्तुकला है, लेकिन वैध उपयोग के मामले हैं। वही सबसे अधिक कुछ के लिए सच है।