У меня есть класс, который обрабатывает связь с каким-либо устройством. Я назвал этот класс Protocol. Класс не содержит информации о состоянии, и поэтому я создал класс модели, который должен раскрывать методы в классе протокола и содержать состояние устройства.Какую опцию следует выбирать для раскрытия функциональности?
Как я вижу, есть три способа реализации этого
- Пусть модель класса унаследованы из протокола
- Пусть класс модели реализуют протокол
- Пусть модель выставить протокол через a свойство
Может быть, протокол содержит методы, которые лучше не подвергаются реализации разработчику класса модели, который говорит против вариантов 1 и 3.
Вариант 2 позволяет мне выбрать, какие вещи, которые я хотел бы выставить из протокола, но большая часть функциональности будет только вызовы к протоколу, как:
DoSomething()
{
protocol.DoSomething();
}
Что вы думаете, что будет «лучше "вариант?
N.B .: Причина развязки состояния и протокола заключается в том, что протокол не является фиксированным и может меняться в зависимости от внешних факторов.
так почему модель разговаривает с протоколом в первую очередь? – Filip
Он содержит состояние устройства и должен иметь способ получить это состояние. – kasperhj
Почему опция 3 предоставляет уязвимые методы протокола агрегирующему классу? Даже вариант 1, который обычно плохо использует наследование, не может в конечном итоге разоблачить что-либо. – Jon