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

  1. Шаблон адаптера
  2. Фасадный узор

Шаблон адаптера

Этот шаблон преобразует интерфейс объекта, чтобы другой объект мог его понять. Как и все остальное, давайте представим его в качестве примера, как розетку адаптера, которая принимает британскую вилку и имеет штыри в американском стиле для подключения к розетке, чтобы люди из Великобритании могли заряжать свои телефоны в США. В этом контексте штепсельная вилка в британском стиле — это клиент, который подключается к адаптеру для выполнения определенного запроса, в данном случае для зарядки телефона в США, без него человек из Великобритании не сможет зарядить свои телефоны, так как вилка и розетка несовместимы.

Вкратце, Клиент, который в этом примере является подключаемым модулем, вызывает адаптер, который является реализацией интерфейса адаптера. Адаптер принимает экземпляр Outlet (AKA Adaptee) в качестве аргумента, а затем вызывает метод chargePhone() внутри метода request().

Фасадный узор

Этот шаблон проектирования предоставляет упрощенный интерфейс для библиотеки, фреймворка или любого набора сложных классов. Давайте подготовим сцену, предположим, что вы создали большой проект, придерживающийся принципов SOLID, который состоит из X классов, которые взаимодействуют друг с другом, туда и обратно, в конечном итоге связь между этими классами становится невероятно сложной, что может привести к петлям зависимостей. происходит между этими классами. Чтобы избежать этого, мы можем использовать шаблон фасада, который в основном представляет собой класс, который взаимодействует со сложной логикой вместо того, чтобы Клиент собирал информацию по частям.

По сути, Клиент использует Фасад в качестве посредника для связи со сложной логикой вашей архитектуры.

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