定义:将抽象和实现解耦,使得两者可以独立地变化。

桥接模式可以将一系列密切关联的类拆分成抽象与实现两个独立的层次,以实现抽象与实现的解耦,抽象和实现可以独立变化,而不会相互影响。抽象与实现一般通过组合实现。

桥接模式包含4类对象:

  1. 抽象对象:提供通用控制逻辑
  2. 具体抽象对象:控制逻辑的具体实现
  3. 实现对象:实现的通用接口
  4. 具体实现对象:实现的具体实现代码

代码实现:

// 实现对象:sim卡通用接口  
public interface SIMCard {  
    void getSIMInfo();  
}

//具体实现对象:联通手机卡  
public class UnicomSIMCard implements SIMCard{  
    @Override  
    public void getSIMInfo() {  
        System.out.println("联通手机卡");  
    }  
}

//抽象对象:通用手机接口  
public interface Phone {  
    void setSimCard(SIMCard simCard);  
    void useSIMCard();  
}

// 手机抽象类  
public abstract class BasicPhone implements Phone{  
  
    private SIMCard simCard;  
  
    @Override  
    public void setSimCard(SIMCard simCard) {  
        this.simCard=simCard;  
    }  
  
    @Override  
    public void useSIMCard() {  
        this.simCard.getSIMInfo();  
    }  
}

// 具体抽象对象:苹果手机  
public class iPhone extends BasicPhone {  
    @Override  
    public void useSIMCard() {  
        System.out.print("苹果手机使用:");  
        super.useSIMCard();  
    }  
}

//客户端代码
SIMCard unicomSIMCard=new UnicomSIMCard();  
Phone iphone=new iPhone();  
iphone.setSimCard(unicomSIMCard);  
iphone.useSIMCard();

桥接模式的优点是:

  1. 客户端仅需要了解高层的抽象接口,无需了解具体的实现细节。
  2. 符合开闭原则。抽象与实现可以独立新增扩展。
  3. 符合单一职责原则。高层抽象部分专注于逻辑,实现部分专注于实现细节。
  4. 抽象与实现解耦。