2

私は MVVM Foundation の SampleModel プロジェクトを使用しICommand_decrementCommandますRelayCommandRelayCommand継承することは知っていますが、 ?ICommandを返すだけの方が明確ではありません。RelayCommand

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

1 に答える 1

5

これは、回避できる最も具体的なタイプを使用するという原則です。具象型または特定の型は、呼び出し元が知る必要のない情報を公開する可能性が高く、変更する必要がある可能性が高い (実装の詳細にする) ため、問題があります。

この場合、常に ICommand を返すと、呼び出し元を壊さずに基になるコマンドの種類を変更できます。また、呼び出し元が関数の動作について実際に知っておく必要がある以上のことを知る必要がないことも期待できます。つまり、オブジェクト指向の原則を破る可能性が低くなります。

于 2010-09-24T23:25:41.743 に答える