桥接模式定义
桥接模式,英文名Bridge Pattern,是一种结构型设计模式,是指把 抽象与 行为实现分离开,保持各部分的独立性以及功能扩展。
桥接模式作用
桥接模式它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。
桥接模式是抽象与实现分离,扩展能力强,符合开闭原则,符合合成复用原则,其实现细节对客户透明。
桥接模式角色
桥接(Bridge)模式包含4大主要角色,如下图所示:
1.抽象化(Abstraction)角色
定义抽象类,并包含一个对实现化对象的引用。
2.扩展抽象化(Refined Abstraction)角色
是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
3.实现化(Implementor)角色
定义实现化角色的接口,供扩展抽象化角色调用。
4.具体实现化(Concrete Implementor)角色
给出实现化角色接口的具体实现。
桥接模式实现
桥接模式结构实现,如下图所示:
1.定义抽象化角色
abstract class Abstraction { protected Implementor imple; protected Abstraction(Implementor imple) { this.imple = imple; } public abstract void Operation(); }
2.定义扩展抽象化角色
class RefinedAbstraction extends Abstraction { protected RefinedAbstraction(Implementor imple) { super(imple); } public void Operation() { System.out.println("扩展抽象化(Refined Abstraction)角色被访问"); imple.OperationImpl(); }
3.定义实现化角色
interface Implementor { public void OperationImpl(); }
4.定义具体实现化角色
class ConcreteImplementorA implements Implementor { public void OperationImpl() { System.out.println("具体实现化(Concrete Implementor)角色被访问"); } }
5.桥接模式测试
public class BridgeTest { public static void main(String[] args) { Implementor imple = new ConcreteImplementorA(); Abstraction abs = new RefinedAbstraction(imple); abs.Operation(); } }
桥接模式应用场景
JDBC连接数据库时,JDBC为所有的关系型数据库提供一个通用的标准,利用驱动来桥接,这就是一个桥接模式的典型应用。
比如:MySQL 的 Connection 接口实现的是 java.sql.Connection 接口,同时 Oracle 数据库也一样可以实现 java.sql.Connection 接口,它们向下都可以有更多的实现子类。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》