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