2011-09-25 11 views
5

इस साक्षात्कार सवाल जो मैं सोच रहा हूँ के बारे में ऐसे:OOP डिजाइन प्रश्न

एक सॉफ्टवेयर कंपनी एक ऐप्लिकेशन है जो कर्मचारियों का प्रबंधन करता है डिज़ाइन किया गया और अन्य कार्यों के बीच में, वेतन की गणना करता है।

वर्तमान संरचना जो ग्राहक की जरूरतों फिट बैठता है:

abstract Class Employee; 
Class Manager extends Employee; 
Class Engineer extends Employee; 

ग्राहक अब कर्मचारियों को जो एक प्रति घंटा मजदूरी, मासिक वेतन पर काम के लिए वेतन गणना के विभिन्न प्रकार के समर्थन करने की क्षमता जोड़ना चाहते हैं। अभियंता और प्रबंधक दोनों या तो हो सकते हैं।

ग्राहक ने सॉफ्टवेयर कंपनी को भी सूचित किया कि वे भविष्य में कई अन्य प्रकार के वेतन जोड़ देंगे।

प्रश्न - आप इसे कैसे डिजाइन करेंगे? क्या किसी भी डिजाइन पैटर्न समाधान में गिरावट आती है?

धन्यवाद!

http://en.wikipedia.org/wiki/Strategy_pattern

मेक "Salary_Calculation" कर्मचारी से जुड़े एक रणनीति:

उत्तर

7

रणनीति पैटर्न को लागू करें। "Salary_Calculation" एक इंटरफेस या एक सार आधार वर्ग होना चाहिए, और प्रत्येक वेतन गणना मॉडल उस का एक उप-वर्ग है।

+0

धन्यवाद। वह मेरा झटका था। मैं अन्य विचारों को देखने के लिए एक घंटे का इंतजार करूंगा। बीटीडब्लू - क्या रणनीति के मुकाबले यह प्रतिनिधि नहीं है? http://p2p.wrox.com/book-professional-php-design-patterns/78122-differences-between-delegate-strategy-pattern.html – Turd

+1

यहां "प्रतिनिधि पैटर्न" का उपयोग करने का अर्थ है, कर्मचारी गणना नहीं करता है खुद के वेतन लेकिन रणनीति वस्तु के लिए इसे प्रतिनिधि। यह विभिन्न वेतन गणना मॉडल के बारे में कुछ भी नहीं कहता है। "रणनीति पैटर्न" का अर्थ है कि आपके पास अलग-अलग उप-वर्ग होंगे, प्रत्येक वेतन गणना के लिए एक। यह परिभाषित नहीं करता है कि गणना कहां होती है (विभिन्न उप-वर्ग केवल "कर्मचारी" सही गणना करने में सहायता के लिए मेटाडेटा प्रदान कर सकते हैं)। दोनों पैटर्न यहां लागू होंगे, ओह, मैं बात करता हूं कि "साक्षात्कार" वह साक्षात्कारकर्ता था जिसके बाद आप साक्षात्कारकर्ता थे। –

1

वेतन वेतन का उपयोग करके कर्मचारी ऑब्जेक्ट के निर्माण के दौरान वेतन वेतनकुलर इंटरफ़ेस जोड़ें और वेतन वेतनक्यूलेटर ऑब्जेक्ट को तुरंत चालू करें। वेतन कैलकुलेटर ऑब्जेक्ट प्रत्येक वेतन प्रकार के लिए वेतन गणना का ख्याल रखेगा।

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