使用桥接模式的效果
面向对象的特征之一就是封装,朴素的讲封装就是在实现外面套上接口。但是这样做的结果是将接口的定义和接口的实现绑在了一起。桥接模式将实现部分从接口中分离出来并进行了抽象化。这样一来,就可以很简单地在运行时刻替换实现部分。例如,我们可以设计一个通讯端口,在程序执行时将通讯方式从Wifi切换到蓝牙。
在桥接模式中,真正实现功能的代码是在包含在实现类的具象类中,物理上和接口类分离。二者可以在不同的时机编译,也可以交由不同的团队开发。这一点可以为开发的管理带来很大的方便。
软件开发中经常会出现分层结构,其最简易的实现方式就是利用桥接模式的思想将下层看作上上层的实现,也就是说就是让上层结构拿着下层的指针即可。还以通讯端口类,我们可以将其分为协议层,和物理通路层并且让协议层管理物理通路层的指针即可。
更进一步
使用桥接模式时需要考虑以下两个的问题:
1.如何区分接口和实现。
简单的说,接口类定义的应该是用户领域中的功能。还以通讯端口为例,用户需要可能的发送命令和接受现场数据,至于是通过Wifi还是蓝牙,是否要加密等用户没有必要关心,都是实现层面的事情。
2.如何判断要不要将对实现部分进行分离和抽象。
只要区分出那些是接口,那些是实现,接下来只有有限的几个选择:
0)什么也不做
1)将实现部分独立成私有方法。
2)将实现部分独立成单独的类。
3)对实现部分进行抽象,并在具象类中实现功能。
上述几种情况,分离和抽象的程度越来越深。但是如果仔细想一想,除了从0)到1)以外,其他的变化都不涉及逻辑,大部分工作只要代码移动就可以完成。所以真的没有必要纠结,看到哪就做到哪吧。
觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】