Шаблоны проектирования
14 января 2020
Шаблон или паттерн проектирования — это кусок кода с примером архитектурного решения типовой задачи. Шаблоны предлагают известную концепцию решения, а также дают возможность архитектурно и логически упорядочить код.
Выделяют три группы шаблонов:
Ниже перечисляются конкретные шаблоны и примеры их реализации на языке PHP.
Выделяют три группы шаблонов:
- Порождающие (Creational) – описывают создание объектов.
- Структурные (Structural) – описывают структурную организацию связей между объектами.
- Поведенческие (Behavioral) – описывают поведение объектов.
Ниже перечисляются конкретные шаблоны и примеры их реализации на языке PHP.
Порождающие шаблоны
Порождающие паттерны абстрагируют создание объектов и полезны в случаях, когда создание объектов с помощью конструктора становится обременительным.- ОДИНОЧКА (SINGLETON)
Используется в случаях, где требуется только один объект класса и нужно иметь общую точку доступа к этому объекту.Пример задачи: реализация работы с БД. Создаётся единственный объект для подключения к базе и выполнения запросов, причём доступ к объекту должен иметься из любого места кода. - ФАБРИЧНЫЙ МЕТОД (FACTORY METHOD)
Определяет в родительском классе общую схему создания объекта и даёт дочерним классам право самостоятельно решать, объект какого класса им нужно создавать. Тем самым, в родительском классе задаётся абстрактная логика, а в дочерних классах реализуется конкретная логика.Пример задачи: запись логов на разные носители (вывод на экран, запись в файл на локальном диске, сохранение в базу данных). - АБСТРАКТНАЯ ФАБРИКА (ABSTRACT FACTORY)
Предоставляет механизм для создания семейств связанных объектов без указания их конкретных классов. Паттерн действует как фабрика фабрик, где главная фабрика создает другие фабрики, которые, в свою очередь, создают конкретные продукты (объекты). Это позволяет в клиентском коде легко переключаться между группами связанных объектов без крупных изменений кода.Пример задачи: реализация тем оформления приборной панели электромобиля. - СТРОИТЕЛЬ (BUILDER)
Предлагает схему пошагового создания сложных объектов. С помощью этого паттерна, используя один и тот же конструктивный код, можно создавать объекты разных типов или одного типа, но с разным наполнением.Пример задачи: создание запросов к БД, используя конструктор запросов. - ПРОТОТИП (PROTOTYPE)
Представляет механизм для массового создания различных объектов с помощью класса-прототипа и последующего копирования однотипных объектов, вместо их создания с нуля.Пример задачи: создание армии юнитов на карте игровой стратегии.