Повышайте уровень интерфейсов ваших классов

Есть концепции настолько простые, что удивительно, что у них есть название. Это не значит, что они бесполезны. Часто самые простые концепции лучше всего подходят для работы. Свободный интерфейс упрощает использование API объекта и способствует созданию цепочек методов. Это очень полезный метод, позволяющий сделать интерфейс класса более выразительным и простым в использовании для клиентов.

Давайте рассмотрим пример простого построителя SQL-запросов на PHP. Мы можем создать запрос выбора с дополнительными условиями:

Все работает нормально, но не очень удобно. С помощью небольшой настройки мы можем сделать его намного более приятным в использовании. Прямо сейчас каждый метод отвечает только за добавление новых частей запроса, но он также может возвращать свой экземпляр класса и разрешать цепочку методов. Интерфейс нашего конструктора запросов будет выглядеть так:

Если API класса используется более одного раза, этот подход может быть проще и прозрачнее. Пример реализации нашего QueryBuilder с гибким интерфейсом может выглядеть следующим образом:

Примечание. Это только пример, а не готовый к эксплуатации код.

Исходный код

Полный исходный код и некоторые другие шаблоны доступны здесь:



Ресурсы



Если вы хотите изучить еще несколько шаблонов проектирования, вы можете найти их в следующих статьях: