设计模式——桥接模式(Bridge模式)
2021/9/30 23:10:49
本文主要是介绍设计模式——桥接模式(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(); } }
这就使桥接模式,从类图上可以看出,一个抽象类带一个接口飞的样子,其实还可以继续抽象,不过再抽象就接近装饰者模式了
这篇关于设计模式——桥接模式(Bridge模式)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现