MVVM Stiftung: Warum Rückkehr ICommand, wenn sein als RelayCommand definiert
-
05-10-2019 - |
Frage
i das SampleModel Projekt bin mit von MVVM Foundation .Warum ist ICommand
zurückgegeben, wenn _decrementCommand
als RelayCommand
deklariert wird. Ich weiß, RelayCommand
inherits ICommand
aber ist nicht klarer sein, nur eine RelayCommand
zurückkehren?
public ICommand DecrementCommand {
get { return _decrementCommand ?? (_decrementCommand = new RelayCommand(() => --this.Value)); }
}
RelayCommand _decrementCommand;
Lösung
Das ist das Prinzip des geringsten spezifischen Typs mit Ihnen durchkommen. Beton oder bestimmte Arten sind eine Haftung, weil sie eher belichten Dinge, die Anrufer müssen nicht über wissen, und sie sind eher nach Bedarf geändert werden (sie eine Implementierung Detail machen).
In diesem Fall, wenn Sie immer ICommand zurückkehren, dann können Sie den zugrunde liegenden Befehlstyp ohne Anrufer zu brechen ändern. Sie können auch erwarten, dass die Anrufer nicht wissen müssen, um mehr über das, was Ihre Funktion hat, als sie sollten eigentlich wissen, was bedeutet, dass sie weniger wahrscheinlich sein wird, OO Prinzipien zu brechen.