Шаблон «Template method» (Шаблонный метод)
08-11-2019Время чтения ~ 1 мин.PHP/ООП 6210
Основное назначение Template method — выделить из основного класса какие-то операции, которые могут быть выполнены классами-наследниками.
Пример кода я разместил на гитхабе.
Смысл шаблона достаточно простой: есть некий абстрактный класс, который реализует всю необходимую логику. Для тех операций, которые могут меняться, создаются абстрактные методы. Также в классе могут быть базовые и «пустые» методы, которые предполагается переопределять в наследниках.
Метод run()
содержит алгоритм выполнения. Понятно, что таких методов может быть несколько. Дальше просто: создаются наследники, которые а) реализуют абстрактные методы и б) переопределяют, если нужно, другие.
Если другими словами, то Шаблонный метод не что иное, как наследование, а не композиция. Такой алгоритм очень часто используется в PHP, например во фреймворках (например при создании контролёра или модели).