我正在使用来自SampleModel项目 MVVM基金会。为什么是 ICommand 返回的时候 _decrementCommand 被宣布为 RelayCommand. 。我知道 RelayCommand 继承 ICommand 但是只能退还一个 RelayCommand?

public ICommand DecrementCommand {
    get { return _decrementCommand ?? (_decrementCommand = new RelayCommand(() => --this.Value)); }
}
RelayCommand _decrementCommand;
有帮助吗?

解决方案

这是使用您可以逃脱的最小特定类型的原则。具体类型或特定类型是责任,因为它们更有可能暴露呼叫者不需要了解的事情,并且更有可能更改它们(使其成为实施细节)。

在这种情况下,如果您始终返回iCommand,则可以在不断开呼叫者的情况下更改基础命令类型。您还可以期望呼叫者不必比实际知道的功能更多地了解您的功能,这意味着他们将不太可能违反OO原则。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top