千家信息网

Java设计模式的桥接模式怎么实现

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"Java设计模式的桥接模式怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java设计模式的桥接模式怎么实现"吧!什么是桥接
千家信息网最后更新 2025年02月01日Java设计模式的桥接模式怎么实现

这篇文章主要讲解了"Java设计模式的桥接模式怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java设计模式的桥接模式怎么实现"吧!

什么是桥接模式

桥接(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();    }}

感谢各位的阅读,以上就是"Java设计模式的桥接模式怎么实现"的内容了,经过本文的学习后,相信大家对Java设计模式的桥接模式怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0