Предположим, что у меня есть такое требование:
Объекты в системе производятся из базового класса с именем IObject и могут иметь объекты с цветом, объекты с преобразованиями и т.д.
Теперь есть два подхода к разработке иерархии классов.
Первый из них:
просто позвольте конкретному классу, полученному из IObject, а также выберите "возможность", интерфейсов в качестве базового класса для указывают, что он поддерживает такое поведение, как интерфейс: IHasColor,
IHasTransformation
Второй:
Организуйте базовые классы, и пусть конкретные классы, полученные из одного из их: IObject, IColorObject, ITransfromationObject, IColorAndTransformationObject
Я предпочитаю первый (имеет ли формальное имя?), поскольку он более гибкий, и, как вы видите, у второго может возникнуть проблема с комбинацией классов, когда есть много атрибутов, таких как цвет, преобразование...
Я хотел бы знать ваши идеи и предложения.
Спасибо.