Java设计模式以虹猫蓝兔的故事讲解桥接模式

网友投稿 289 2022-08-03


Java设计模式以虹猫蓝兔的故事讲解桥接模式

目录什么是桥接模式优点缺点知识点桥接模式实现颜色黄色红色裙子长裙短裙测试总结

模式: http://桥接模式

案例: 蓝兔宫主买裙子

什么是桥接模式

桥接(Bridge)模式的定义如下: 将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

优点

1、抽象与实现分离,扩展能力强

2、符合开闭原则

3、符合合成复用原则

4、其实现细节对客户透明

缺点

由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这增加了系统的理解与设计难度。

知识点

可以将抽象化部分与实现化部分分开,取消二者的继承关系,改用组合关系。

桥接模式实现

案例: 蓝兔宫主买裙子

裙子分两个维度,分别是颜色和样式。

颜色有黄色和红色;

样式分长裙和短裙;

抽象化(Abstraction)角色: 颜色

扩展抽象化(Refined Abstraction)角色: 黄色和红色

实现化(Implementor)角色: 样式

具体实现化(Concrete Implementor)角色: 长裙和短裙

颜色

颜色接口,声明一个show()抽象方法

public interface Color {

void show();

}

黄色

黄色类并实现颜色接口

public class ColorYellow implements Color {

@Override

public void show() {

System.out.println("黄色的");

}

}

红色

红色类并实现颜色接口

public class ColorRed implements Color {

@Override

public void show() {

System.out.println("红色的");

}

}

裙子

裙子类,声明一个颜色属性和一个抽象方法

abstract class Qun {

protected Color color;

protected Qun() {

}

protected Qun(Color color) {

this.color = color;

}

public abstract void shows();

}

长裙

继承裙子类,并实现抽象方法

public class QunChang extends Qun {

protected QunChang() {

}

protected QunChang(Color color) {

super(color);

}

@Override

public void shows() {

System.out.println("长裙");

color.show();

}

}

短裙

继承裙子类,并实现抽象方法

public class QunDuan extends Qun {

protected QunDuan() {

}

protected QunDuan(Color color) {

super(color);

}

@Override

public void shows() {

System.out.println("短裙");

color.show();

}

}

测试

new一个红色对象作为参数传给长裙。

public class Demo {

public static void main(String[] args) {

Color color = new ColorRed();

Qun qun = new QunChang(color);

qun.shows();

}

}

总结

当一个类内部具备两种或多种变化维度时,使用桥接模式可以解耦这些变化的维度,使高层代码架构稳定。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:elasticsearch java客户端action的实现简单分析
下一篇:elasticsearch构造Client实现java客户端调用接口示例分析(elasticsearch客户端 java)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~