桥接模式详解(作用类图及应用实例)

桥接模式详解(作用类图及应用实例)-mikechen

桥接模式定义

桥接模式,英文名Bridge Pattern,是一种结构型设计模式,是指把 抽象与 行为实现分离开,保持各部分的独立性以及功能扩展。

 

桥接模式作用

桥接模式它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

桥接模式是抽象与实现分离,扩展能力强,符合开闭原则,符合合成复用原则,其实现细节对客户透明。

 

桥接模式角色

桥接(Bridge)模式包含4大主要角色,如下图所示:

桥接模式详解(作用类图及应用实例)-mikechen

1.抽象化(Abstraction)角色

定义抽象类,并包含一个对实现化对象的引用。

2.扩展抽象化(Refined Abstraction)角色

是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。

3.实现化(Implementor)角色

定义实现化角色的接口,供扩展抽象化角色调用。

4.具体实现化(Concrete Implementor)角色

给出实现化角色接口的具体实现。

 

桥接模式实现

桥接模式结构实现,如下图所示:

桥接模式详解(作用类图及应用实例)-mikechen

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为所有的关系型数据库提供一个通用的标准,利用驱动来桥接,这就是一个桥接模式的典型应用。

桥接模式详解(作用类图及应用实例)-mikechen

比如:MySQL 的 Connection 接口实现的是 java.sql.Connection 接口,同时 Oracle 数据库也一样可以实现 java.sql.Connection 接口,它们向下都可以有更多的实现子类。

 

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法