ProghubPH
rootroot30.05.20 15:34
senior

Структурный паттерн проектирования, разделяющий один или несколько классов

oop

Речь идёт о паттерне Мост. Чтобы понять его суть, необходимо определиться с понятиями абстракция и реализация. Абстракция (или интерфейс) — это образный слой управления чем-либо. Он не делает работу самостоятельно, а делегирует её слою реализации (иногда называемому платформой).

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

Если говорить о реальных программах, то абстракцией может выступать графический интерфейс программы (GUI), а реализацией — низкоуровневый код операционной системы (API), к которому графический интерфейс обращается по реакции на действия пользователя.

Здесь вырисовывается два вектора развития программы: использование нескольких видов GUI и поддержка многих видов API. Такая программа может выглядеть как один большой клубок кода, в котором намешаны условные операторы слоёв GUI и API. Можно попытаться структурировать этот хаос, создав для каждой вариации интерфейса-платформы свои подклассы. Но такой подход приведёт к росту классов комбинаций, и с каждой новой платформой их будет всё больше.

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

Абстракция будет делегировать работу одному из объектов реализаций. Причём, реализации можно будет взаимозаменять, но только при условии, что все они будут следовать общему интерфейсу.

Таким образом, вы сможете изменять графический интерфейс приложения, не трогая низкоуровневый код работы с операционной системой. И наоборот, вы сможете добавлять поддержку новых операционных систем, создавая подклассы реализации, без необходимости менять классы графического интерфейса.

Комментарии