Java设计模式(九)结构型- 桥接模式 Bridge Pattern(史上最全桥接模式)与使用场景以及优缺点

  1. 桥接模式

桥接模式也称为桥梁模式、接口模式或者柄体(Handle and Body)模式,是将抽象部分与他的具体实现部分分离,使它们都可以独立地变化,通过组合的方式建立两个类之间的联系,而不是继承。

桥接(Bridge)模式包含以下主要角色:

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

1.1 代码实现

下面以一个多系统多视频格式文件播放为例子:

// 视频接口
public interface Video {
    void decode(String fileName);
}
 
// MP4格式类
public class Mp4 implements Video{
    @Override
    public void decode(String fileName) {
        System.out.println("MP4视频文件:"+ fileName);
    }
}
// RMVB格式类
public class Rmvb implements Video{
    @Override
    public void decode(String fileName) {
        System.out.println("rmvb文件:" + fileName);
    }
}
// 操作系统抽象类
@AllArgsConstructor
public abstract class OperatingSystem {
    Video video;
    public abstract void play(String fileName);
 
}
// iOS系统
public class Ios extends OperatingSystem {
    public Ios(Video video){
        super(video);
    }
    @Override
    public void play(String fileName) {
        video.decode(fileName);
    }
}
// windows系统
public class Windows extends OperatingSystem {
    public Windows(Video video){
        super(video);
    }
    @Override
    public void play(String fileName) {
        video.decode(fileName);
    }
}

Java设计模式(九)结构型- 桥接模式 Bridge Pattern(史上最全桥接模式)与使用场景以及优缺点_第1张图片

可以通过类图看到,视频类和操作系统类之间通过OperatingSystem类桥接关联起来。

1.2 总结

适用场景:

  • 在抽象和具体实现之间需要增加更多的灵活性的场景。
  • 一个类存在两个(或多个)独立变化的维度,而这两个(或多个)维度都需要独立进行扩展。
  • 不希望使用继承,或因为多层继承导致系统类的个数剧增。

优点:

  • 分离抽象部分及其具体实现部分。
  • 提高了系统的扩展性。
  • 符合开闭原型。
  • 符合合成复用原则。

缺点:

  • 增加了系统的理解与设计难度。
  • 需要正确地识别系统中两个独立变化的维度。

你可能感兴趣的:(java设计模式,java,设计模式,桥接模式)