Шаблон проектирования «Мост» (Bridge)

Шаблон проектирования «Мост» (Bridge) позволяет разделять абстракцию и реализацию, чтобы они могли изменяться независимо друг от друга.

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

Например, допустим у нас есть абстрактный класс «машинка» (Toy) и несколько его конкретных реализаций: «автомобиль» (Car), «грузовик» (Truck), «поезд» (Train) и т.д. Мы также имеем несколько реализаций «движущихся частей» (Movement), таких как «колеса» (Wheels), «гусеницы» (Tracks) и т.д. Чтобы создать конкретные игрушки, мы можем использовать мост, создавая отдельную иерархию классов для «движущихся частей» и связывая ее с иерархией классов «машинок».

Таким образом, шаблон мост позволяет разделять абстракцию и реализацию, чтобы они могли изменяться независимо друг от друга, делая код более гибким и расширяемым.