设计模式-结构型之桥接(bridge)模式

定义
  • 将类的功能层次结构与实现层次结构分离。
  • 功能层次结构:
    – 当我们需要新增加一个功能时,通常我们会新增一个子类,当还需要增加功能,我们在现在子类上增加一个子类,这种继承树的延伸称作类的功能层次结构。
  • 实现层次结构:
    – 当功能相似时,我们会基于抽象层新增一个实现类,当还有相似时,我们会继续增加新的实现,这种横向增加新的实现类称作类的实现层次结构。
使用场景,
  • 将类的功能层次结构和类的实现层次结构分离开来。
  • 举例:如手机,最开始只能够打电话,照相(像素),不同大小,当需要新增功能(短信、邮件)时,新增实现类MiPhone;不同型号的手机有不同的像素和大小等特点,只需在右边添加新的实现,在手机抽象层中聚合了Feature。
UML图

在这里插入图片描述

代码实现
public class Phone {
	//充当桥梁:在功能结构层与实现结构层架起桥梁
    private Feature bridge;

    public Phone(Feature bridge) {
        this.bridge = bridge;
    }

    public void call(){
        System.out.println("打电话");
    }
    //使用委托
    public int pixel(){
        return bridge.pixel();
    }

    public int size(){
        return bridge.size();
    }
}
public interface Feature {
    //像素
    public int pixel();
    //大小
    public int size();
}
public class MiPhone extends Phone {

    public MiPhone(Feature bridge) {
        super(bridge);
    }

    public void message(){
        System.out.println("发送短信");
    }

    public void email(){
        System.out.println("发送邮件");
    }
}
public class FeatureImpl implements Feature {
    @Override
    public int pixel() {
        return 5000000;
    }

    @Override
    public int size() {
        return 80;
    }
}
//测试
public class Client {
    public static void main(String[] args) {
        MiPhone miPhone = new MiPhone(new FeatureImpl());
        miPhone.email();
        int size = miPhone.size();
        int pixel = miPhone.pixel();
    }
}
总结
  • 将类的功能层次结构与实现层次结构分离。
  • 使用继承来达到功能层次结构;使用接口实现来达到实现层次结构;使用聚合将两者关联。
  • 符合开闭原则,易于扩展。
  • 符合依赖倒转原则:依赖于 Feature 接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值