मैं रणनीति पैटर्न को समझने की कोशिश कर रहा हूं और खुद से पूछ रहा हूं: क्या संदर्भ वर्ग में पैटर्न के उद्देश्य से समझौता किए बिना इसे छोड़ना चाहिए या मैं इसे छोड़ सकता हूं?
मैं इस धारणा के तहत था कि मुझे विभिन्न प्रकार की फ़ाइलों को पढ़ने के लिए किसी प्रकार के स्विच की आवश्यकता है, लेकिन केवल कुछ हैक करना नहीं चाहता था और बाद में रिफैक्टरिंग के साथ सौदा करना चाहता था (हालांकि, निश्चित रूप से यह हमेशा होता है कि कोड को फिर से सक्रिय किया जा सकता है लेकिन विचार था: प्रयास करें पहले से डिज़ाइन में जितना संभव हो उतना स्मार्ट ...):
विकिमीडिया से ली गई छवि
क्या क्लाइंट सीधे स्ट्रैटेजी इंटरफेस में आ सकता है या क्या ऐसा कुछ है जिसे मैं सिर्फ संदर्भ वर्ग के बारे में समझने में चूक गया हूं?
interface Reader {
// read information from file and fill data list field of Client
readFile();
}
class ExcelReader implements Reader{ /* */ }
class PdfReader implements Reader{ /* */}
class Client{
// strategic choice
Reader r;
// data list field
List<Data> data;
// Client Constructor
public Client(){
if(<file ends in .xls>)
r = new ExcelReader();
else
r = new PdfReader();
r.readFile();
}
}
तो, ऊपर दर्शाया गया संदर्भ वर्ग गायब है। क्या कोड रणनीति पैटर्न का पालन करता है?