Повышайте уровень интерфейсов ваших классов
Есть концепции настолько простые, что удивительно, что у них есть название. Это не значит, что они бесполезны. Часто самые простые концепции лучше всего подходят для работы. Свободный интерфейс упрощает использование API объекта и способствует созданию цепочек методов. Это очень полезный метод, позволяющий сделать интерфейс класса более выразительным и простым в использовании для клиентов.
Давайте рассмотрим пример простого построителя SQL-запросов на PHP. Мы можем создать запрос выбора с дополнительными условиями:
Все работает нормально, но не очень удобно. С помощью небольшой настройки мы можем сделать его намного более приятным в использовании. Прямо сейчас каждый метод отвечает только за добавление новых частей запроса, но он также может возвращать свой экземпляр класса и разрешать цепочку методов. Интерфейс нашего конструктора запросов будет выглядеть так:
Если API класса используется более одного раза, этот подход может быть проще и прозрачнее. Пример реализации нашего QueryBuilder
с гибким интерфейсом может выглядеть следующим образом:
Примечание. Это только пример, а не готовый к эксплуатации код.
Исходный код
Полный исходный код и некоторые другие шаблоны доступны здесь:
Ресурсы
Если вы хотите изучить еще несколько шаблонов проектирования, вы можете найти их в следующих статьях:
- Заводской метод
- Творческие узоры
- Наблюдатель
- Итератор
- Состояние и стратегия
- Шаблонный метод
- Наилегчайший вес
- Прокси
- Декоратор
- "Внедрение зависимости"
- Композитный
- Адаптер
- "Фасад"
- "Мост"
- Цепочка ответственности
- Гость
- Команда
- Нулевой объект
- "Технические характеристики"