हाल ही में मैंने ओओपी के चारों ओर अपना सिर लपेटना शुरू कर दिया है, और मैं अब उस बिंदु पर हूं जहां मैं जितना अधिक अमूर्त वर्गों के बीच के अंतर के बारे में पढ़ता हूं और उतना ही भ्रमित हो जाता हूं कि मैं और अधिक भ्रमित हो जाता हूं। अब तक, न तो तत्काल किया जा सकता है। इंटरफेस अधिक या कम संरचनात्मक ब्लूप्रिंट होते हैं जो कंकाल और अमूर्त को निर्धारित करते हैं जो आंशिक रूप से कोड को लागू करने में सक्षम होते हैं।
मैं अपनी विशिष्ट स्थिति के माध्यम से इनके बारे में अधिक जानना चाहूंगा। यहाँ मेरे पहले प्रश्न की एक कड़ी है यदि आप थोड़ी अधिक पृष्ठभूमि की जानकारी चाहते हैं: मेरे नए वर्ग के लिए एक अच्छा डिज़ाइन मॉडल क्या है?
यहां मैंने दो कक्षाएं बनाई हैं:
class Ad {
$title;
$description
$price;
function get_data($website){ }
function validate_price(){ }
}
class calendar_event {
$title;
$description
$start_date;
function get_data($website){ //guts }
function validate_dates(){ //guts }
}
इसलिए, जैसा कि आप देख सकते हैं कि ये कक्षाएं लगभग समान हैं। यहां नहीं दिखाया गया है, लेकिन अन्य कार्य हैं like get_zip()
, save_to_database()
जो मेरी कक्षाओं में आम हैं। मैंने अन्य वर्गों कार और पालतू जानवरों को भी जोड़ा है जिनके पास सभी सामान्य तरीके हैं और निश्चित रूप से उन वर्गों के लिए विशिष्ट गुण हैं (उदाहरण के लिए माइलेज, वजन)।
अब मैंने DRY सिद्धांत का उल्लंघन किया है और मैं एक ही कोड को कई फाइलों में बदल रहा हूं। मैं नावों, घोड़ों, या जो भी हो, जैसे अधिक कक्षाएं लेने का इरादा रखता हूं।
तो क्या यह वह जगह है जहाँ मैं एक इंटरफ़ेस या एक सार वर्ग का उपयोग करूँगा? अमूर्त कक्षाओं के बारे में मेरी समझ से मैं सार वर्ग में निर्मित सभी सामान्य तत्वों के साथ एक टेम्पलेट के रूप में एक सुपर क्लास का उपयोग करूंगा, और फिर भविष्य की कक्षाओं में विशेष रूप से आवश्यक वस्तुओं को केवल जोड़ दूंगा। उदाहरण के लिए:
abstract class content {
$title;
$description
function get_data($website){ }
function common_function2() { }
function common_function3() { }
}
class calendar_event extends content {
$start_date;
function validate_dates(){ }
}
या क्या मैं एक इंटरफ़ेस का उपयोग करूंगा और, क्योंकि ये समान हैं, एक ऐसी संरचना बनाएं जिसमें से प्रत्येक उपवर्ग अखंडता कारणों के लिए उपयोग करने के लिए मजबूर हो, और इसे अंतिम डेवलपर तक छोड़ दें, जो प्रत्येक वर्ग के लिए जिम्मेदार होने के लिए उस वर्ग को जिम्मेदार ठहराता है। सामान्य कार्यों का विवरण। मेरी सोच यह है कि कुछ 'सामान्य' कार्यों को भविष्य में अपनी विशिष्ट कक्षा की जरूरतों के लिए ट्विक करने की आवश्यकता हो सकती है।
उपरोक्त सभी के बावजूद, यदि आप मानते हैं कि मैं पूरी तरह से अमूर्त वर्गों और इंटरफेस की गलतफहमी को क्यों समझ रहा हूं, तो हर तरह से इस दिशा में सोच को रोकने के लिए एक वैध उत्तर दें और आगे बढ़ने का उचित तरीका सुझाएं!
धन्यवाद!