Lavorando su WPF (programmazione dell'interfaccia utente) in C # ho iniziato a iniettare frequentemente metodi nel costruttore dei miei modelli di visualizzazione.
Ad esempio:
public class HtmlRegexListViewModel : ViewModel
{
private readonly Action<HtmlRegex> onSelection;
public List<HtmlRegex> HtmlRegexes { get; private set; }
private HtmlRegex selected;
public HtmlRegex Selected
{
get { return selected; }
set
{
selected = value;
onSelection(value);
}
}
public HtmlRegexListViewModel(Action<HtmlRegex> onSelection, IDatabase database)
{
this.onSelection = onSelection;
HtmlRegexes = database.LoadHtmlRegexesVerySlowly();
}
}
Ora lo faccio principalmente sui modelli di visualizzazione perché non voglio passare allo sforzo di creare una coppia di classi derivate EventHandler ed EventArgs ogni volta che voglio dire all'oggetto padre che il mio stato è cambiato.
Comunque lo uso anche estensivamente altrove.
Sembra che sia uno stile di cui mi pentirò quando si tratta di mantenere il codice in futuro, ma al momento non riesco a pensare a molti aspetti negativi. Disaccoppia, preserva la separazione delle preoccupazioni ed è un buon modo per creare una classe che ha una sola responsabilità.
Quindi questo è un pattern (differito di doppia spedizione?), un anti-pattern o se non lo è, dovrebbe essere?