Foundation MVVM: зачем вернуть ICOMMAND, если он определяется как релайКомманда

StackOverflow https://stackoverflow.com/questions/3791701

  •  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, вы можете изменить базовый тип команды без разбивки абонентов. Вы также можете ожидать, что звонящие не придется узнать больше о том, что делает ваша функция, чем они на самом деле должны знать, что означает, что они будут менее вероятно, чтобы сломать принципы ОО.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top