Je pense à créer un objet filtre qui filtre et supprime tout comme les balises html d'un contexte. Mais je veux qu'il soit indépendant, ce qui signifie que le modèle de conception que je peux appliquer m'aidera à ajouter plus de filtres dans le futur sans affecter les codes actuels. Je pensais à Abstract Factory mais il semble que ça ne marchera pas comme je le veux. Donc, peut-être constructeur, mais il semble même. Je ne sais pas je suis un peu confus, quelqu'un s'il vous plaît me recommander un modèle de conception qui peut résoudre mon problème, mais avant cela, permettez-moi d'élaborer un peu le problème.Motifs de conception Recommandation pour l'option de filtrage
Disons que j'ai une classe qui a un champ Description ou une propriété. Et j'ai besoin de filtres qui suppriment les choses que je veux de cette propriété Description. Donc, chaque fois que j'applique le filtre, je peux ajouter plus de filtre dans le niveau sous-jacent. Ainsi, au lieu de retoucher le champ Description, je peux facilement ajouter plus de filtres et tous les filtres vont s'exécuter dans le champ Description et supprimer tout ce qu'ils sont censés supprimer du contexte Description.
J'espère pouvoir décrire mon problème. Je pense que certains d'entre vous ont déjà été confrontés à la même situation.
Merci à l'avance ...
Edit:
Je veux vraiment créer des filtres comme types/classes au lieu de méthodes régulières ou autre chose. Comme:
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.
}
}
À ce stade, si je veux appliquer Abstract Factory qui serait vide de sens ou Builder ainsi. Parce que je ne veux pas de chose particulière, j'ai besoin de tous.
Merci pour vos réponses d'ailleurs.
Edit 2 - Réponse possible pour moi
permet Okay penser modèle de stratégie avec des interfaces plutôt que les délégués.
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();
}
}
[Filtre Design Motif à l'exemple] (http://www.singhajit.com/filter-design-pattern/) –