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