Расширение нескольких объектов

Представьте, что у меня есть класс, определяющий сущность, такую ​​как Product,

Моя структура структурирована в переключаемые модули, так что некоторые модули могут расширять класс по умолчанию, т.е.

  • Module1 позвольте мне определить ColoredProduct
  • Module2 позвольте мне определить ShapedProduct

Как бы я определил отношения между ColoredProduct, ShapedProduct а также Product? Как я могу убедиться, что могу получить динамическое отношение (переключать одно или другое без вмешательства кода)?

Должен ли я продлить продукт класса? Я ссылаюсь на это в каждом подклассе?

Я использую PHP. Спасибо за ваш вклад.

2

Решение

Похоже, вы ищете иерархию классов:

  • Product это суперкласс
  • ColoredProduct а также ShapedProduct являются подклассами.

Вам не нужно никакого дополнительного кода, так как подклассы наследуют методы и свойства от Product суперкласс.

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

Если ваш вопрос больше касается проектирования связанных модулей приложения, это может быть интересно: В чем разница между слабой связью и жесткой связью в объектно-ориентированной парадигме?.

Для очень хорошего примера того, как независимые модули могут быть разработаны в PHP, вы должны взглянуть на Модули в Yii2 Framework.

0

Другие решения

Других решений пока нет …