设计模式-桥接模式

背景

有三个品牌的手机:华为,小米,oppo,每个品牌都有三种不同类型的手机:大折叠,小折叠,直屏。

传统思路:

手机作为最大的父类,有三个子类:大折叠,小折叠,直屏;

这三个子类,根据品牌不同每个子类又可以分别有三个子类:华为,小米,oppo。

一共有3*3九种。

问题:

扩展问题(类爆炸):增加一种手机类型,或者一个品牌,都要相应增加各个品牌或者手机类型的类。违反了单一职责原则

基本介绍

桥接模式基于类的最小设计模式,将实现与抽象放在两个不同的类层次中,使这两个层次可以单独改变。

是一种结构设计模式。

四个角色

①抽象类(所谓的桥):是某一系列类的抽象。

②功能接口:具体功能的抽象接口

③具体实现类:实现抽象的功能接口

④具体类:抽象类的子类,具体表示某一事物。

分析:

所有具体类继承自抽象类,

在抽象类中通过调用功能接口,让类拥有具体功能。抽象类与功能接口为聚合关系

通过抽象类和功能接口的隔离,将具体类与具体的实现不发生任何关系。是解耦合。

具体实现

角色分配

①需要实现功能的类别作为接口,所以手机的牌子作为功能接口,小米、华为、oppo作为具体实现类,实现功能接口。

②手机作为抽象类,大折叠、小折叠、直屏分别作为三个具体类继承自这个抽象类。

代码实现

创建Brand接口,假设有三个抽象方法:开机,关机,打电话

创建小米、oppo、华为三个类实现Brand接口的三个抽象方法。

创建手机抽象类,声明一个Brand对象,创建三个方法,开机,关机,打电话,在方法中调用Brand接口对象中的方法。

创建大折叠,小折叠,直屏三个类继承手机抽象类,完善抽象父类中的开机,关机,打电话三个方法。

在使用时,先声明具体一个手机类型类(大折叠、小折叠、直屏),将具体牌子类(小米、oppo、华为)传入手机类中的Brand对象中,即可完成一个具体手机。

相关推荐
执明wa4 小时前
Android 开发中的设计模式入门:六大设计原则
android·设计模式
莫得感情 o4 小时前
设计模式 09 · 适配器模式
设计模式·适配器模式
梅头脑20 小时前
学了6种设计模式却写出了同事看不懂的代码——SOLID五原则反例对照,治好了我的"过度设计"
设计模式
workflower1 天前
案例:大模型驱动的“发现- 研判- 整改- 验证”全闭环治理体系
人工智能·深度学习·机器学习·设计模式·机器人
董员外1 天前
RAG 系统进化论(九):RAG 评测,怎样证明系统真的变好了?
人工智能·设计模式·程序员
西安小哥1 天前
AI时代技术工程师的"道法术器势":学习图谱、成长规划与角色重塑
人工智能·设计模式·程序员
莫得感情 o1 天前
设计模式 08 · 装饰器模式
设计模式·装饰器模式
董员外2 天前
RAG 系统进化论(八):Agentic RAG(智能体式 RAG),从回答问题到完成任务
人工智能·后端·设计模式
董员外2 天前
RAG 系统进化论(七):Multimodal RAG(多模态 RAG),当知识存在于表格、图片和页面中
人工智能·后端·设计模式
大山同学2 天前
第 2 篇(03-04 章):代理设计原则与工具使用设计模式
设计模式