На текущий момент есть один большой класс, который имеет довольно много методов и свойств.
Однако, в разных местах программы никогда не требуется сразу весь реализованный функционал, и возникает желание "облегчить" класс.
Я полагаю, можно вынести основной функционал в общий класс, а за тем вынести в классы-наследники более узконаправленный. Например:
Однако, если в виде исключения потребуется одновременно функционал обоих классов-наследников что делать - непонятно. (Каждый раз править набор общих методов мне кажется неоправданно трудоёмко)
Может использовать трейты для расширения функционала?
Однако что-то меня смущает в трейтах.
Может есть какие-то бест практис решения?
Ответ
Для решения данной задачи хорошо подходит механизм композиции. Навскидку его можно достичь 2 путями:
1) Использовать трейты (traits), для php >= 5.4. http://php.net/manual/ru/language.oop5.traits.php
2) Использовать реализацию с помощью паттерна "Декоратор", при помощи которого мы можем к базовой функциональности подключать необходимый нам функционал. Тут есть отличное описание схемы работы данного паттерна:
https://refactoring.guru/ru/design-patterns/decorator
Комментариев нет:
Отправить комментарий