C#:桥接模式
转自原文 C#: 桥接模式 1.引言 桥接模式是一种很实用的结构型设计模式,如果系统中的某各类存在两个独立变化的纬度,通过桥接模式可以将这两个纬度分离出来,它是将抽象部分和实现部分解耦,使得两者都能够独立变化。如果不理解,怎么说都会觉得晦涩,看下面的两个例子: (1)示例1【 桥接模式 】 把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下: 这样的实现使得每部不同型号的电视都有自己遥控器实现,这样的设计对于电视机的改变可以很好地应对,只需要添加一个派生类就搞定了,但随着时间的推移,用户需要改变遥控器的功能,如:用户可能后面需要对遥控器添加返回上一个台等功能时,此时上面的设计就需要修改抽象类RemoteControl的提供的接口了,此时可能只需要向抽象类中添加一个方法就可以解决了,但是这样带来的问题是我们改变了抽象的实现,如果用户需要同时改变电视机品型号和遥控器功能时,上面的设计就会导致相当大的修改,显然这样的设计并不是好的设计。 (2)示例2 画笔有毛笔和蜡笔两种,假如需要大、中、小3种型号的画笔,能够分别绘制出12种不同的颜色,如果使用蜡笔的话需要准备36支,如果使用毛笔,则只需要准备3种型号的毛笔外加12种颜色的调色板,总共15样。如果需要新增一种新型号的画笔,对于蜡笔来说需要增加12支