设计模式(第十式:桥梁模式)
概念:
桥梁模式:将抽象解藕,使得这两个能独立的变化。桥梁模式也叫桥接模式。
实现:
定义材质
public interface Material {/*** 获取纸张* @return 纸张类型*/String getSheet();}
材质的两种实现
public class A4 implements Material {@Overridepublic String getSheet() {return "A4";}}public class A8 implements Material {@Overridepublic String getSheet() {return "A8";}}
定义抽象类型的书
public abstract class AbstractBook {Material material;public AbstractBook(Material material){this.material = material;}public abstract void materialInfo();}
抽象书的两种实现
public class NovelBook extends AbstractBook {public NovelBook(Material material) {super(material);}@Overridepublic void materialInfo() {System.out.println("小说都用"+material.getSheet()+"来制作。");}}public class ToolBook extends AbstractBook {public ToolBook(Material material) {super(material);}@Overridepublic void materialInfo() {System.out.println("工具书都是"+material.getSheet()+"制作的");}}
测试与结果
测试
@Testpublic void bridgeTest(){Material material = new A4();AbstractBook novelBook =new NovelBook(material);novelBook.materialInfo();AbstractBook toolBook =new ToolBook(material);toolBook.materialInfo();material = new A8();toolBook = new ToolBook(material);toolBook.materialInfo();}
结果
小说都用A4来制作。
工具书都是A4制作的
工具书都是A8制作的
分析:
1.看着代码应该就很好理解,有没有一种感觉,抽象类是此岸,接口是彼岸。其实这个模式本来不常用到,有一种感觉就是给芭比娃娃换衣服,这就能有很多种搭配。但正常的逻辑一般都不需要反复来回搭配,都是一种固有的模式了。但有些还特定的场景还是能用到的。
2.可以看得出来,桥接模式有很强的可扩展性。
3.适用场景:
a.如果继承层级过多,可以使用这种模式打破继续继承的模式。
...
(这个平时不常用,所以就...)
转载于:https://www.cnblogs.com/ben-mario/p/10782639.html
设计模式(第十式:桥梁模式)相关推荐
- 云计算设计模式(十)——守门员模式
云计算设计模式(十)--守门员模式 通过使用充当客户端和应用程序或服务之间的代理,验证和进行消毒的请求,并将它们之间的请求和数据的专用主机实例保护的应用程序和服务.这可以提供一个额外的安全层,并限制了 ...
- 《设计模式之禅》-桥梁模式
桥梁模式也叫做桥接模式,是一种比较简单的模式 定义 将抽象和实现解耦,使得两者可以独立地变化 桥梁模式中的4个角色 Abstraction--抽象化角色 它的主要职责是定义出该角色的行为,同时保存一个 ...
- C#设计模式之十五迭代器模式(Iterator Pattern)【行为型】
一.引言 今天我们开始讲"行为型"设计模式的第三个模式,该模式是[迭代器模式],英文名称是:Iterator Pattern.还是老套路,先从名字上来看看."迭代器模式& ...
- C#设计模式之十二代理模式(Proxy Pattern)【结构型】
一.引言 今天我们要讲[结构型]设计模式的第七个模式,也是"结构型"设计模式中的最后一个模式,该模式是[代理模式],英文名称是:Proxy Pattern.还是老套路,先从名字上来 ...
- 设计模式(八)桥梁模式(Bridge)
一.写在前面 之前有读者评论说,前边的文章开头理论性太强了,显得晦涩难懂,会把读者搞晕,谢谢这位读者,同时也希望其他的读者多提意见,帮助我改正提高博客,为了改进之前的问题,今天我们先用例子引入,然后再 ...
- 【JAVA长虹键法】第十式 桥接模式(23种设计模式)
- 设计模式(十一)桥梁模式(结构型)
概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种"多维度的变化"?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引 ...
- 小话设计模式(十)外观模式
外观(Fascade)模式定义一个高级的接口,将子系统里的一组接口整合起来,提供了一个统一的外观. 在以下情况下可以考虑使用外观模式: (1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观 ...
- 小侃设计模式(十)-外观模式
1.概述 外观模式(Facade Pattern)为子系统中的接口提供了一个统一接口,用来访问子系统中的一组接口,这个模式定义了一个高层接口,该接口使得客户端调用系统更加地方便.外观模式主要通过定义一 ...
- 从王者荣耀看设计模式(十五.建造者模式)
从王者荣耀看设计模式(建造者模式) 一.简介 为了玩王者荣耀的游戏体验感,不少玩家都会选择花钱购买自己常用英雄的皮肤.一方面,购买的皮肤通常要比原画更加"炫酷".另一方面,购买的英 ...
最新文章
- 统计学习方法:朴素贝叶斯
- ajax传formdata类型的数据_JQuery.Ajax()的data参数类型
- 7-26晚上实现mystring
- 答读者问:学历不高,要如何破局?
- 使用Windows版Redis
- sqlserver分区表索引
- 用GZIP来压缩socket传输的序列化的类
- 基于ADS54J60的JESD204B调试心得-fanfanStudio
- java jsessionid_关于JSESSIONID
- python django(1170, BLOB/TEXT column 'name' used in key specification without a key length)
- 微信小程序下拉刷新/上拉加载组件
- 2022建筑电工(建筑特殊工种)考试题目模拟考试平台操作
- Operator '==' cannot be applied to错误
- 简单的Python五子棋
- vuex 是什么? 以及它的基本使用
- 计算机算法对程序设计的作用,【程序设计论文】高中算法与程序设计教学意义及有效性(共3796字)...
- 亲测解决谷歌chrome浏览器的“此Flash Player与您的地区不相容,请重新安装Flash”
- dubbo源码编译和打包
- 天体运行的数学原理------N体问题的三百年
- linux 端口没有进程号,「linux专栏」何为端口号?端口号和进程号如何互查?答案在这里...