设计模式之桥接模式(结构型)

Posted 思想累积

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之桥接模式(结构型)相关的知识,希望对你有一定的参考价值。

1、简介

1.1 定义

桥接模式(Bridge):将抽象与实现分离,使它们可以独立变化

比如我们常用的 JDBC 连接数据库的时候,在各个数据库之间进行切换,基本不需要改动什么代码,甚至丝毫不用动,原因就是 JDBC 提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就可以了

1.2 优缺点

优点:

  • 抽象与实现分离,扩展能力强
  • 符合开闭原则
  • 符合合成复用原则
  • 实现细节透明

缺点:

  • 聚合关系建立在抽象层,增加了系统的理解和设计难度

1.3 结构

桥接模式主要包含以下几个角色

  • 抽象(Abstraction)角色:定义抽象类,包含一个对实现化对象的引用
  • 扩展抽象化(Refined Abstraction)角色:抽象化角色的子类,实现父类中的方法,并通过组合关系调用实现化角色中的方法
  • 实现(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用
  • 具体实现(Concrete Implementor)角色:实现化角色的具体实现

2、代码实现

/**
 * 实现角色,供抽象角色调用
 */
public interface Implementor 

    void operationImpl();



/**
 * 具体实现角色 A,对实现角色声明的方法进行实现
 */
public class ConcreteImplementorA implements Implementor

    @Override
    public void operationImpl() 
        System.out.println("具体实现角色 A");
    



/**
* 抽象角色,包含对实现角色的引用
*/
public abstract class Abstraction 

    protected Implementor implementor;

    protected Abstraction(Implementor implementor) 
        this.implementor = implementor;
    

    public abstract void operation();



/**
* 抽象角色的子类,实现父类方法并组合起来对实现角色中的方法进行调用
*/
public class RefinedAbstraction extends Abstraction 

    public RefinedAbstraction(Implementor implementor) 
        super(implementor);
    

    @Override
    public void operation() 
        System.out.println("扩展抽象化角色的 operation 方法");
        implementor.operationImpl();
    


以上是关于设计模式之桥接模式(结构型)的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之适配器模式与桥接模式详解和应用

设计模式之桥接模式

设计模式-结构型-桥接模式

结构化设计模式-桥接模式

java设计模式之桥接模式

设计模式-桥接模式及使用场景