进阶学习(3.9) Bridge Pattern 桥接模式

1, 什么是桥接

桥,  提供给两方, 或者多方相交汇的作用,   

例如, A 函数想调用 B 函数,   

常见的方法就是, 直接在A 中显式 调用B, 这样存在高耦合,  如果我们使用一个中间函数C, 在C里面显调用A, 再调用B, 像是这样

1.1  A -> B 

1.2  C -> A -> B

A B 耦合就解开了, 

1.3  更抽象的理解使用,   比如从数据库里面的数据, 怎么就变成了 Java 中的对象呢?  这中间肯定就有桥接模式的使用, 有很多很多的桥, 将数据库里面的数据, 解析成了Java 对象

 

2, 优缺点

2.1 解耦合,  如同第一点中所说的 , A 和 B 之间实现了解耦合

2.2 代码更加面向对象, 说白了, 写的代码牛逼

2.3 通过桥接模式可以实现不同接口直接的数据转换

2.4 A 和 B 虽然解了耦合,  但如果我 A 调完 B 我还要执行 A 中的一些代码怎么办, 就需要对A 函数就行拆分封装,  如果A里面很多调用的话, 就增加了代码的复杂程度,  越复杂,  等同于增加了, 代码维护性,  使用之前先考虑考虑

 

3, 代码示例

// 抽象桥
public interface IBridge {
    // 将hdmi 信号转换成vga
    boolean HdmiToVga(IHdmi hdmi, IVga vga);
}

// 实例桥
public class Bridge implements IBridge {
    
    @Override
    public boolean HdmiToVga(IHdmi hdmi, IVga vga) {

        String data = hdmi.getData();
        System.out.println("对数据进行转换:" + data);
        vga.setData(data);
        return false;
    }
}

// 抽象HDMI 协议
public interface IHdmi {
    String getData();
    boolean setData(String data);
}

// 实例HDMI 信号协议
public class Hdmi implements IHdmi {

    private String data;

    @Override
    public String getData() {
        return data;
    }

    @Override
    public boolean setData(String data) {
        this.data = data;
        return true;
    }
}

// 抽象Vga 协议
public interface IVga {
    String getData();
    boolean setData(String data);
}

// 实例Vga
public class Vga implements IVga {

    private String data;

    @Override
    public String getData() {
        return data;
    }

    @Override
    public boolean setData(String data) {
        System.out.println("VGA 成功接收了数据: " + data);
        this.data = data;
        return true;
    }
}

public static void main(String[] args) {


        IBridge bridge = new Bridge();

        IHdmi hdmi = new Hdmi();
        hdmi.setData("hello vga");

        IVga vga = new Vga();

        bridge.HdmiToVga(hdmi, vga);
        System.out.println(vga.getData());

}

//=========================
对数据进行转换:hello vga
VGA 成功接收了数据: hello vga
hello vga


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值