Дизайн класса, Интерфейсы или Конкретные классы - PullRequest
0 голосов
/ 28 октября 2010

У меня проблема с использованием интерфейсов против конкретных классов.
У меня есть базовый класс, который реализует некоторые общие свойства / методы. Теперь у меня есть два возможных расширения. Либо у этого базового класса может быть какое-то свойство с именем Parameters, либо у него может быть другое свойство с именем Children, либо он может иметь оба.

На мой взгляд, я могу создать либо 2 интерфейса (IParameterised, IParent), либо реализовать три подкласса (ParameterObject, ParentObject, ParentParameterObject). Вопрос в том, какой из них лучше дизайн. Сейчас я склоняюсь к методу интерфейса, но я не опытный программист, поэтому любые советы приветствуются

Ответы [ 2 ]

2 голосов
/ 28 октября 2010

Я думаю, что ваш "наклон" правильный, и другие согласились бы: http://www.artima.com/lejava/articles/designprinciples4.html

1 голос
/ 28 октября 2010

Некоторые фоны по этой теме, которые должны помочь вам: принцип замены Лискова (больше здесь ) и концепция композиции над наследованием .

Короче говоря, не реализуйте 3 подкласса (т. Е. Подход наследования): что произойдет, если вам понадобятся 2 или 3 дополнительных общих свойства / метода в будущем?Всего за 2 дополнения вы смотрите около 15 уникальных комбинаций.Для композиции, посмотрите на состояние и стратегия шаблоны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...