Интерфейс как возможность или Интерфейс как тип

Допустим, у меня есть такое требование:
Все объекты в системе являются производными от базового класса с именем IObject, и он может иметь объекты с цветом, объекты с преобразованиями и и то, и другое.

Теперь существует два подхода к разработке иерархии классов.
Первый:

просто позвольте конкретному классу, производному от IObject, а также выберите «возможность» интерфейсы в качестве базового класса для указать, что поддерживает такое поведение, как интерфейс: IHasColor,
IHasTransformation

Второй:

Организуйте базовые классы и позвольте конкретные классы, производные от одного из их: IObject, IColorObject, ITransfromationObject, IColorAndTransformationObject

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

Я хотел бы знать ваши идеи и предложения.

Спасибо.

11
задан skaffman 22 June 2011 в 12:33
поделиться