MVVM Fondation: Pourquoi le retour ICommand lorsque son défini comme RelayCommand
-
05-10-2019 - |
Question
J'utilise le projet SampleModel de MVVM Fondation .Pourquoi est ICommand
retourné lorsque _decrementCommand
est déclarée comme RelayCommand
. Je sais hérite RelayCommand
ICommand
mais n'est plus clair pour revenir juste un RelayCommand
?
public ICommand DecrementCommand {
get { return _decrementCommand ?? (_decrementCommand = new RelayCommand(() => --this.Value)); }
}
RelayCommand _decrementCommand;
La solution
Ceci est le principe d'utiliser le moins type spécifique, vous pouvez vous en sortir avec. types de béton ou spécifiques sont une responsabilité parce qu'ils sont plus susceptibles d'exposer les choses que les appelants ne ont pas besoin de connaître et ils sont plus susceptibles d'avoir besoin d'être changé (ce qui les rend un détail de mise en œuvre).
Dans ce cas, si vous revenez toujours ICommand, vous pouvez modifier le type de commande sous-jacente sans casser les appelants. Vous pouvez également vous attendre à ce que les appelants ne doivent en savoir plus sur ce que votre fonction ne qu'ils devraient réellement savoir, ce qui signifie qu'ils seront moins susceptibles de briser les principes OO.