场景描述

模式镇模式村有个桥,桥北的人比较富有,桥南的人比较贫穷;;桥北的人为了彰显自己的实力,他们都用金子做的水龙头,桥南的人比较安逸;他们则用普通的铁质水龙头。这可苦恼了水管工人,于是他想到了这么做。

模式简介

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

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

模式类图

image-1669091133002

桥接模式包含如下角色:

• Abstraction:抽象类

• RefinedAbstraction:扩充抽象类

• Implementor:实现类接口

• ConcreteImplementor:具体实现类

代码示例

// 实现类接口
public interface Tap{
     
     public void fill();

} 
//抽象类
public abstract class Abstraction{

    protected Tap tap;

    public void setTap(Tap tap)
    {
        this.tap=tap;
    }

    public abstract void doFill();
}


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

    public void doFill()
    {
        //代码
        tap.fill();
        //代码
    }
}

//实现类A
public AuTap implements Tap{
     
     public void fill(){
         System.out.println("金制水龙头");
     }

} 

//实现类B
public FeTap implements Tap{
     
     public void fill(){
         System.out.println("铁质水龙头");
     }

} 

public class Demo{

   public static void main(String[] args){
         RefinedAbstraction  ra = new RefinedAbstraction();
         ra.setTap(new AuTap());
         System.out.println(ra.doFill());
         
         ra.setImpl(new FeTap());
         System.out.println(ra.doFill());
   
   }
}

水管工人通过这样的操作,可以灵活的改变水龙头的实现;即使他们想换成别的材质的水龙头,他也可以快速的实现。

使用场景

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

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

  • 重⽤性要求较⾼的场景