2

我正在使用来自MVVM Foundation的 SampleModel 项目。为什么在声明为时ICommand返回。我知道继承但不会更清楚只返回 a吗?_decrementCommandRelayCommandRelayCommandICommandRelayCommand

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

1 回答 1

5

这是使用您可以逃脱的最少特定类型的原则。具体或特定类型是一种责任,因为它们更有可能暴露调用者不需要知道的东西,并且它们更有可能需要更改(使它们成为实现细节)。

在这种情况下,如果您总是返回 ICommand,那么您可以在不中断调用者的情况下更改底层命令类型。您还可以期望调用者不必比他们实际应该知道的更多地了解您的函数所做的事情,这意味着他们不太可能违反 OO 原则。

于 2010-09-24T23:25:41.743 回答