桥接模式: 将抽象和行为划分开来,各自独立,但能动态的结合。
在这里抽象不是表示抽象类或接口,而是表示对应于现实的一种实体的集合。比如说人就是一种抽象,吃饭就是一种行为。抽象不一定有行为。但行为一定是依附于抽象的。对于抽象的不同子集会有不同的行为。而同样的行为也可能属于抽象的不同子集。这样我们可以把行为抽取出来进行不重不漏的分类封装。从而和抽象的子集进行"排列组合"。
类图:
下面来谈一谈防盗门。如果我们把门设计成和门的防盗功能结合在一起。
这样好像是没什么问题吧。不过贼就只会撬,砸什么的吗?他还会砍什么的。那有多少种我们就实现多少种
AgainstTheft()吧。这个不存在什么问题。
天啊,刚才讨论的仅仅是木门,别忘了世界上可不止一种门。什么木门啊,铁门啊,什么塑料门啊,钢门就别算了。那这么一算是三种门三种防盗方式。 3*3就要实现9个类。估计这时候你要砸键盘了。要是30*30呢人就疯掉了。
怎么去改进呢,仔细思考一下,我们的Door既有门的功能又有防盗的功能。但是现实还可以是这么一种情况,门只具有门的功能加上防盗器才具有防盗的功能。门和防盗器之间可以自由的组合,那现在好了 30*30 变成 30+30啦。这个世界清净了,不用做这么多傻逼的重复劳动了。
那重新设计一下吧:
//防盗器的接口
调用代码
你可能在想,防盗器本身不也是一种现实中实体的集合吗,不也是一种抽象吗。不过自然、人类就是天生的解耦高手,谁知道世界上的第一张防盗门是不是门本身具有防盗功能呢(这个没必要考究了,我本身也怀疑这样的想法,不做个假设又何妨呢),只是在时间和人类的智慧在悄悄的改变这个世界,重构这个世界。防盗的功能也被人类智慧封装到一个叫防盗器的类里面了。程序本身也是对这个世界的模型的一种模拟。如果你觉得下面这个设计本该如此,那么它就是对这个世界的合理的模拟了。
分享到:
相关推荐
设计模型之桥接模式 bridge C++实现源码,vs2019
移动公司 吉比特 光猫 ZXHN G6611 路由模式router 改 桥接模式bridge 方法 详细教程
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
7、桥接模式(bridge) 用意:将抽象部分和实现部分分离,使他们可以独自变化
Bridge 桥接模式(结构型模式)视频
桥接模式 Bridge:将抽象部分与他的实现部分分离,使他们都可以独立的变化合成/聚合复用原则: 尽量使用合成/聚合,尽量不要使用继承解释:什么叫抽象与他的实现分离,并不是说,让抽象类与其派生类分离,因为这就没有任何...
创建型模式 (100%) 设计模式面面观(8):创建型模式总结 (100%) 设计模式面面观(9):适配器模式(Adapter Pattern)-结构型模式 (100%) 设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式 ...
C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) 体验课程
C#面向对象设计模式 Bridge 桥接模式 视频讲座下载
桥接模式是一种结构型设计模式,它的目的是将抽象化与实现化解耦,使得它们可以独立变化。这种模式主要用于处理当一个类存在两个或多个独立的变化的维度时的情况,例如,当一个类的抽象部分和实现部分可能发生变化,...
主要为大家详细介绍了java设计模式之桥接模式Bridge,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
桥接模式的示例代码和文档,学习桥接模式的参考资料。
C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) (Level 300)
主要为大家详细介绍了C++设计模式之桥接模式Bridge,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
初学桥接模式时的具体实现。若理解有误,还请各位大S纠正。
桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。 这里说明一下,什么叫抽象与它的实现分离,这并不是说,让抽象类与其派生类分离,因为这没有任何意义。实现指的是抽象类和它的派生类...
NULL 博文链接:https://andrewstz.iteye.com/blog/1668231
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源... 这是第8节:结构型模式Bridge桥接模式
c++设计模式-结构型模式-桥接模式;qt工程,c++简单源码; 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度...