设计模式——桥接模式(Bridge模式)
基本介绍
- 桥接模式(Bridge模式):将实现与抽象放在两个不同的类层次中,使两层次可以独立改变
- 是一种结构型设计模式
- 说白了就是有多个维度的变化,这样的组合关系如果按照传统的方式会导致类爆炸,所以需要将两个维度抽象出来,然后让其通过对象进行组合,来减少类的创建
用手机来举例
当前有两个维度:1. 品牌; 2. 样式
品牌:小米 华为 Vivo等
手机样式:直板机、滑盖机、翻盖机等
先定义品牌维度接口
public interface Brand {
// 品牌口号
String brandVoice();
}
定义一个品牌小米
public class Xiaomi implements Brand {
@Override
public String brandVoice() {
return "为发烧而生...";
}
}
在定义样式接口
public interface PhoneStyle {
// 手机样式
String style();
}
定义电话类
public abstract class Phone {
//组合品牌
private Brand mBrand;
//构造器
public Phone(Brand mBrand) {
this.mBrand = mBrand;
}
protected void open(){
this.mBrand.brandVoice();
System.out.println("phone open");
}
protected void close(){
this.mBrand.brandVoice();
System.out.println("phone close");
}
protected void call(){
this.mBrand.brandVoice();
System.out.println("phone call");
}
}
定义具体的Phone类
//折叠式手机类,继承抽象类Phone
public class FoldedPhone extends Phone implements PhoneStyle {
//构造器
public FoldedPhone(Brand mBrand) {
super(mBrand);
}
public void open(){
super.open();
style();
}
public void close(){
super.close();
style();
}
public void call(){
super.call();
style();
}
@Override
public String style() {
return "折叠式手机";
}
}
使用
public class Client {
public static void main(String[] args){
//获取折叠式手机(样式+品牌)
Phone phone1 = new FoldedPhone(new Xiaomi());
phone1.open();
phone1.call();
phone1.close();
}
}
这就使桥接模式,从类图上可以看出,一个抽象类带一个接口飞的样子,其实还可以继续抽象,不过再抽象就接近装饰者模式了
本文作者:明月照江江
本文链接:https://www.cnblogs.com/gradyblog/p/15358354.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步