模式简介

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。

模式类图

image-1669091133002

桥接模式包含如下角色:

• Abstraction:抽象类

• RefinedAbstraction:扩充抽象类

• Implementor:实现类接口

• ConcreteImplementor:具体实现类

代码示例

// 实现类接口
public interface Implementor{
     
     public void operationImpl();

} 
//抽象类
public abstract class Abstraction{

    protected Implementor impl;

    public void setImpl(Implementor impl)
    {
        this.impl=impl;
    }

    public abstract void operation();
}


//扩展抽象类
public class RefinedAbstraction extends Abstraction{

    public void operation()
    {
        //代码
        impl.operationImpl();
        //代码
    }
}

//实现类A
public ImplementorA implements Implementor{
     
     public void operationImpl(){
         System.out.println("实现A");
     }

} 

//实现类B
public ImplementorB implements Implementor{
     
     public void operationImpl(){
         System.out.println("实现B");
     }

} 

public class Demo{

   public static void main(String[] args){
         RefinedAbstraction  ra = new RefinedAbstraction();
         ra.setImpl(new ImplementorA());
         System.out.println(ra.operation());
         
         ra.setImpl(new ImplementorB());
         System.out.println(ra.operation());
   
   }
}

使用场景

  • 不希望或不适⽤使⽤继承的场景

  • 接⼝或抽象类不稳定的场景

  • 重⽤性要求较⾼的场景