Estoy pensando en crear un objeto de filtro que filtre y elimine todo, como las etiquetas html de un contexto. Pero quiero que sea independiente, lo que significa que el patrón de diseño que puedo aplicar me ayudará a agregar más filtros en el futuro sin afectar los códigos actuales. Pensé en Abstract Factory, pero parece que no va a funcionar como quiero. Así que tal vez constructor, pero se ve igual. No sé, estoy un poco confundido, alguien me recomiende un patrón de diseño que pueda resolver mi problema, pero antes de eso déjenme explicar el problema un poco.Recomendación de patrones de diseño para la opción de filtro
Digamos que tengo una clase que tiene descripción de campo o propiedad. Y necesito filtros que eliminen las cosas que quiero de esta propiedad de Descripción. Entonces, cada vez que aplico el filtro, puedo agregar más filtro en el nivel subyacente. Entonces, en lugar de volver a tocar el campo Descripción, puedo agregar fácilmente más filtros y todos los filtros se ejecutarán para el campo Descripción y eliminaré lo que se supone que deben eliminar del contexto Descripción.
Espero poder describir mi problema. Creo que algunos de ustedes se encontraron con la misma situación antes.
Gracias de antemano ...
Editar:
realmente quiero crear filtros como los tipos/clases en lugar de los métodos regulares o lo que sea. Me gusta:
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.
}
}
En este punto si quiero aplicar Abstract Factory que no tendría sentido o también Builder. Porque no quiero una cosa en particular, los necesito a todos un poco.
Gracias por sus respuestas, por cierto.
Edición 2 - Posible respuesta para mí
bien permite pensar patrón de estrategia con interfaces en lugar de los delegados.
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();
}
}
[Diseño Patrón del filtro con el Ejemplo] (http://www.singhajit.com/filter-design-pattern/) –