Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Как правильно “облегчить” класс?

#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

Комментариев нет:

Отправить комментарий