设计模式系列【Java】三:桥接模式

桥接模式

看到网上讲桥接模式,示例代码很不错,这里记录下来。

1. 定义

是指将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。

桥接模式使基于类的最小设计原则,通过使用聚合、封装及继承等行为让不同的类承担不同的职责。主要特点是将抽象与行为实现分离开来,从而可以保持各部分的独立性及应对他们的功能扩展。

JDBC的驱动使用了桥接模式

动动发财小手,关注 + 点赞 + 收藏不迷路。

2. 代码实现

/**
 * 手机品牌
 *
 */
public interface Brand {

    /**
     * 开机
     */
    void open();

    /**
     * 关机
     */
    void close();

    /**
     * 打电话
     */
    void call();

}

public class XiaoMi implements Brand {
    /**
     * 开机
     */
    @Override
    public void open() {
        System.out.println("XiaoMi手机开机");
    }

    /**
     * 关机
     */
    @Override
    public void close() {
        System.out.println("XiaoMi手机关机");
    }

    /**
     * 打电话
     */
    @Override
    public void call() {
        System.out.println("XiaoMi手机打电话");
    }
}

public class Vivo implements Brand {
    /**
     * 开机
     */
    @Override
    public void open() {
        System.out.println("Vivo手机开机");
    }

    /**
     * 关机
     */
    @Override
    public void close() {
        System.out.println("Vivo手机关机");
    }

    /**
     * 打电话
     */
    @Override
    public void call() {
        System.out.println("Vivo手机打电话");
    }
}

public abstract class Phone {

    /**
     * 聚合品牌
     */
    private Brand brand;

    public Phone(Brand brand) {
        this.brand = brand;
    }

    public void open() {
        this.brand.open();
    }

    public void close() {
        this.brand.close();
    }

    public void call() {
        this.brand.call();
    }

}

/**
 * 折叠样式手机
 */
public class FoldePhone extends Phone {
    public FoldePhone(Brand brand) {
        super(brand);
    }

    @Override
    public void open() {
        System.out.println("折叠样式手机");
        super.open();
    }

    @Override
    public void close() {
        System.out.println("折叠样式手机");
        super.close();
    }

    @Override
    public void call() {
        System.out.println("折叠样式手机");
        super.call();
    }

}

public class BridgeDemo {

    public static void main(String[] args) {
        Phone xiaomi = new FoldePhone(new XiaoMi());
        xiaomi.open();
        xiaomi.call();
        xiaomi.close();

        Phone vivo = new FoldePhone(new Vivo());
        vivo.open();
        vivo.call();
        vivo.close();
    }

}

输出如下:

折叠样式手机
XiaoMi手机开机
折叠样式手机
XiaoMi手机打电话
折叠样式手机
XiaoMi手机关机
折叠样式手机
Vivo手机开机
折叠样式手机
Vivo手机打电话
折叠样式手机
Vivo手机关机

引用:
1.https://blog.csdn.net/weixin_40159431/article/details/121735864

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值