модели наследования - PullRequest
       8

модели наследования

4 голосов
/ 22 февраля 2010

Я пишу программу, в которой каждый компонент имеет структуру наследования, имеет три уровня ... пользовательский интерфейс, логику и данные ... где каждый из этих уровней имеет интерфейс определенной функциональности, который должны реализовывать все компоненты. Каждый из этих уровней также имеет некоторую функциональность, которая может быть написана в общем для всего интерфейса, а не многократно для каждого компонента.

На мой взгляд, лучшим подходом был бы абстрактный класс между интерфейсом и реализацией компонента, который выполняет все общие функции (как в приведенной здесь диаграмме классов ) ... но наследование правила для C # позволяют мне иметь множественное наследование от нереализованных интерфейсов. Каков будет дизайн лучших практик для достижения такого типа поведения?

Ответы [ 2 ]

4 голосов
/ 22 февраля 2010

Почему бы не иметь каждый из компонентов (пользовательский интерфейс, логику и данные) в другом классе, а затем иметь пользовательский интерфейс, использующий класс логики, и затем класс логики использовать класс данных.

Таким образом, каждый класс может наследоваться от соответствующего универсального класса.

Помните, вы должны предпочесть композицию наследованию

0 голосов
/ 23 февраля 2010

Каждый (абстрактный класс и интерфейс) предлагает свой набор преимуществ и недостатков. В то время как Рассел прав, предлагая композиция вместо наследования , использование шаблонов предполагает программу для интерфейса, а не реализацию (Head First Design Patterns).

Абстрактный класс предлагает массу гибкости, где вы можете реализовать методы , так сказать, , реализовать реализацию и т. Д. Оба интерфейса предлагают полиморфизм, если это вызывает озабоченность. Но абстрактные классы занимают базовую ячейку наследования.

...