मैं एक फ़िल्टर ऑब्जेक्ट बनाने की सोच रहा हूं जो किसी संदर्भ से HTML टैग जैसी चीज़ों को फ़िल्टर और हटा देता है। लेकिन मैं इसे स्वतंत्र होना चाहता हूं जिसका मतलब है कि मैं जिस डिजाइन पैटर्न को लागू कर सकता हूं वह मुझे वर्तमान कोड को प्रभावित किए बिना भविष्य में और अधिक फ़िल्टर जोड़ने में मदद करेगा। मैंने सार फैक्ट्री सोचा लेकिन ऐसा लगता है कि यह जिस तरह से मैं चाहता हूं वह काम नहीं करेगा। तो शायद निर्माता लेकिन यह वही दिखता है। मुझे नहीं पता कि मैं थोड़ी उलझन में हूं, कृपया कोई मुझे एक डिजाइन पैटर्न की सिफारिश करें जो मेरी समस्या का समाधान कर सके लेकिन इससे पहले मुझे समस्या को थोड़ा सा विस्तारित करने दें।फ़िल्टरिंग विकल्प के लिए डिज़ाइन पैटर्न अनुशंसा
आइए कहें कि मेरे पास एक कक्षा है जिसमें विवरण फ़ील्ड या संपत्ति है। और मुझे फ़िल्टर की आवश्यकता है जो मुझे इस विवरण संपत्ति से इच्छित चीजों को हटा दें। इसलिए जब भी मैं फ़िल्टर लागू करता हूं मैं अंतर्निहित स्तर में अधिक फ़िल्टर जोड़ सकता हूं। तो विवरण फ़ील्ड को फिर से स्पर्श करने के बजाय, मैं आसानी से अधिक फ़िल्टर जोड़ सकता हूं और सभी फ़िल्टर विवरण फ़ील्ड के लिए दौड़ेंगे और विवरण संदर्भ से जो कुछ भी हटाना चाहते हैं उसे हटा दें।
मुझे आशा है कि मैं अपनी समस्या का वर्णन कर सकता हूं। मुझे लगता है कि आप में से कुछ पहले एक ही स्थिति में भाग गए थे।
अग्रिम धन्यवाद ...
संपादित करें:
मैं वास्तव में प्रकार/बजाय कक्षाएं नियमित तरीकों या जो कुछ भी रूप में फिल्टर बनाना चाहते हैं। पसंद:
class TextFilter : IFilter
{
private string something;
public string Awesome {get;set;}
public string FilterYo(string textFiltered)
{
// Do filtering
}
}
class HtmlFilter : IFilter
{
private string something;
private string iGotSomething;
public string Awesome {get;set;}
public string FilterYo(string textFiltered)
{
// Do filtering
}
}
class Main
{
protected void Main(object sender, EventArgs e)
{
InputClass input = new InputClass();
string filtered = new StartFiltering().Filter(input.Description); // at this moment, my input class shouldn't know anything about filters or something. I don't know if it makes any sense but this is what in my mind.
}
}
इस बिंदु पर यदि मैं सार फैक्ट्री लागू करना चाहता हूं जो अर्थहीन या बिल्डर भी होगा। क्योंकि मैं एक विशेष चीज़ नहीं चाहता, मुझे उन सभी को थोड़े की जरूरत है।
रास्ते से आपके उत्तरों के लिए धन्यवाद।
संपादित करें 2 - मेरे
ठीक है के लिए संभावित जवाब रणनीति पैटर्न प्रतिनिधियों के बजाय इंटरफेस के साथ के बारे में सोचने की सुविधा देता है।
interface IFilter //Strategy interface
{
string Filter(string text);
}
class LinkFilter:IFilter //Strategy concrete class
{
public string Filter(string text)
{
//filter link tags and return pure text;
}
}
class PictureFilter:IFilter //Strategy concrete class
{
public string Filter(string text)
{
//filter links and return pure text;
}
}
class Context
{
private IFilter _filter;
private string _text;
public Context(IFilter filter,string text)
{
this._filter = filter;
this._text = text;
}
public void UpdateFilter(IFilter filter)
{
this._filter = filter;
}
public string RunFilter()
{
this._text = _filter.Filter(this._text);
return this._text;
}
}
class MainProgram
{
static void Main()
{
MyObject obj = new MyObject();
LinkFilter lfilter = new LinkFilter();
PictureFilter pfilter = new PictureFilter();
Context con = new Context(lfilter,obj.Description);
string desc = con.RunFilter();
con.UpdateFilter(pfilter);
desc = con.RunFilter();
}
}
[उदाहरण के साथ फ़िल्टर डिजाइन पैटर्न] (http://www.singhajit.com/filter-design-pattern/) –