设计模式(八)桥梁模式(Bridge)

本文介绍了桥梁模式,通过画笔和图形的例子展示该模式的应用。文章首先指出传统做法的局限,然后提出桥梁模式的概念,强调其核心是将抽象化与实现化脱耦。接着,详细解释了桥梁模式的结构和组成部分,最后讨论了该模式的优缺点,包括提高系统的可扩展性和隐藏实现细节,但也指出理解和设计难度的增加。
摘要由CSDN通过智能技术生成

一、写在前面

之前有读者评论说,前边的文章开头理论性太强了,显得晦涩难懂,会把读者搞晕,谢谢这位读者,同时也希望其他的读者多提意见,帮助我改正提高博客,为了改进之前的问题,今天我们先用例子引入,然后再给出桥梁模式的相关概念。

二、问题引入

例子1:

现需要提供大中小3种型号的画笔,能够绘制5种不同颜色,如果使用蜡笔,我们需要准备3*5=15支蜡笔,也就是说必须准备15个具体的蜡笔类。而如果使用毛笔的话,只需要3种型号的毛笔,外加5个颜料盒,用3+5=8个类就可以实现15支蜡笔的功能。实际上,蜡笔和毛笔的关键一个区别就在于笔和颜色是否能够分离。

例子2:

设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:

第一种设计方案是为每一种形状都提供一套各种颜色的版本。

这里写图片描述

这种设计方案就是类似于实例一中的蜡笔,颜色和形状紧密结合起来,必须为每一种形状准备各种颜色的版本,加入我们现在要求加入一种颜色蓝色,那么每一种形状都需要修改,所以这种设计方案的缺点是显而易见的,一是不符合“开-闭”原则,二是需要的类非常多,编码重复性较高。

第二种设计方案是根据实际需要对形状和颜色进行组合。

这里写图片描述

上下两部分图是分别从不同的角度描述这种方案,上边的图说的是如何利用形状和颜色进行组合,下边的图说的是各个类的继承和组合关系。第二种方案需要为所有的图形声明一个共同的父类,为所有的颜色声明一个父类,两个父类各有自己的具体实现,我们需要的产品就是有两种具体的产品进行组合得到的。这样在加入新的颜色或者形状的时候不用修改其他的类,而且大大的减少了代码量。而这第二种方案就是我们今天要讨论的桥梁模式。

三、什么是桥梁模式

上边的蜡笔和图形的例子他们都有一个共同的特点就是他们都有两个变化因素,蜡笔是粗细和形状,图形是形状和颜色,不管是毛笔还是图形的第二种解决方案他们

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值