写点什么

设计模式之桥接模式

作者:乌龟哥哥
  • 2022 年 5 月 15 日
  • 本文字数:852 字

    阅读完需:约 3 分钟

设计模式之桥接模式

在 GoF 的《设计模式》一书中,桥接模式被定义为:“将抽象和实现解耦,让它们可以独立变化。”定义中的“抽象”,指的并非“抽象类”或“接口”,而是被抽象出来的一套“类库”,它只包含骨架代码,真正的业务逻辑需要委派给定义中的“实现”来完成。而定义中的“实现”,也并非“接口的实现类”,而是一套独立的“类库”。

应用场景

系统可能有多个维度,每个维度都有可能变化。

类图

将 Color 类组合在 Shape 中来将形状和颜色解耦,各自维护各自的变化,这里体现了组合优于继承的设计原则。


桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

代码实现

Color


public abstract class Color {
public abstract void paint(String shape);
}
复制代码


Red


public class Red extends Color {
@Override public void paint(String shape) { System.out.println("红色的" + shape); }
}
复制代码


Green


public class Green extends Color {
@Override public void paint(String shape) { System.out.println("绿色的" + shape); }
}
复制代码


Shape


public abstract class Shape {
protected Color color;
public void setColor(Color color) { this.color = color; }
public abstract void draw();
}
复制代码


Circle


public class Circle extends Shape {
@Override public void draw() { color.paint("圆形"); }
}
复制代码


Square


public class Square extends Shape {
@Override public void draw() { color.paint("正方形"); }
}
复制代码


Main


public class Main {
public static void main(String[] args) { Shape shape; Color color;
color = new Red(); shape = new Circle(); shape.setColor(color); shape.draw();
color = new Green(); shape = new Square(); shape.setColor(color); shape.draw(); }
}
复制代码


发布于: 刚刚阅读数: 2
用户头像

乌龟哥哥

关注

正在努力寻找offer的大四小菜鸟 2021.03.16 加入

擅长 Hbuilder、VS Code、MyEclipse、AppServ、PS 等软件的安装与卸载 精通 Html、CSS、JavaScript、jQuery、Java 等单词的拼写 熟悉 Windows、Linux、 等系统的开关机 看–时间过得多快,不说了,去搬砖了

评论

发布
暂无评论
设计模式之桥接模式_5 月月更_乌龟哥哥_InfoQ写作社区