type
status
date
slug
summary
tags
category
icon
password
 

一、桥接模式概述

 
Bridge 模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。
 
一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展。
 
如下图,有两个维度,分类和品牌,手机分类(折叠、直立、旋转 … )会有多种,传统的父子类继承模式会随着类型的增多而增多,新增一种类型,都要将每个手机品牌都进行一种实现,类数量会爆炸,基于组合方式的桥接模式可以解决这个问题。
 
notion image
 
 
桥接模式结构:
桥接(Bridge)模式包含以下主要角色:
  • 抽象化(Abstraction)角色 :定义抽象类,并包含一个对实现化对象的引用
  • 扩展抽象化(Refined Abstraction)角色 :是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
  • 实现化(Implementor)角色 :定义实现化角色的接口,供扩展抽象化角色调用
  • 具体实现化(Concrete Implementor)角色 :给出实现化角色接口的具体实现。
 

二、桥接模式实现

 
以上方手机问题为例进行实现!
 

实现化角色-顶层接口

 
品牌接口定义了手机的功能操作:
 
 

抽象化角色-顶层抽象类

 
构造器会传入各个品牌手机对于顶层接口的具体实现,多态接收参数,Phone 的调用就是调用各个品牌手机的实现细节:
抽象化角色(抽象类)中包含实现化角色引用。
 
 

具体实现化角色

 
手机实现品牌功能接口:
 
 

拓展抽象化角色

 
各类型继承手机类,构造器传入各品牌的实现,真正调用的是各品牌实现的方法:
通过组合关系调用实现化角色中的业务方法。
 
 

测试类

 
 

三、小总结

 
  1. 实现了抽象和实现部分的分离,提高了系统的灵活性,使系统分层,结构清晰。
  1. 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它由具体业务完成。
  1. 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本。
  1. 桥接模式的引入增加了系统的理解和设计难度,聚合关联关系建立在抽象层。
  1. 桥接模式要求正确识别出系统中两个独立变化的维度(抽象、和实现)。
 
 
结构型模式之装饰器设计结构型模式之代理设计模式
Loading...
ITNXD
ITNXD
一个普通的干饭人🍚
最新发布
Java 并发编程
2025-7-31
Spring 源码系列第三章 - 后置 Bean 处理器与 Bean 生命周期
2022-12-25
Spring 源码系列第一章 - Spring 核心组件接口
2022-12-11
Spring 源码系列第二章 - 后置工厂处理器与 Bean 生命周期
2022-12-10
行为型模式之迭代器设计模式
2022-12-2
行为型模式之责任链设计模式
2022-12-1