MVVM基金会:为什么将其定义为RelayCommand时返回ICommand
-
05-10-2019 - |
题
我正在使用来自SampleModel项目 MVVM基金会。为什么是 ICommand
返回的时候 _decrementCommand
被宣布为 RelayCommand
. 。我知道 RelayCommand
继承 ICommand
但是只能退还一个 RelayCommand
?
public ICommand DecrementCommand {
get { return _decrementCommand ?? (_decrementCommand = new RelayCommand(() => --this.Value)); }
}
RelayCommand _decrementCommand;
解决方案
这是使用您可以逃脱的最小特定类型的原则。具体类型或特定类型是责任,因为它们更有可能暴露呼叫者不需要了解的事情,并且更有可能更改它们(使其成为实施细节)。
在这种情况下,如果您始终返回iCommand,则可以在不断开呼叫者的情况下更改基础命令类型。您还可以期望呼叫者不必比实际知道的功能更多地了解您的功能,这意味着他们将不太可能违反OO原则。
不隶属于 StackOverflow