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