《每日编程》----《设计模式》----《三》----bridge模式

在我看书中的阐述时,真是痛苦万分。可能是个人理解力比较差吧。最后还是去搜了下。才真正明白该模式的用法;

 

转载注明出处:http://blog.csdn.net/lengzijian/article/details/8111223

 

比如汽车可在不同的路上行驶,你会怎样设计?

 

按照我们正常的设计方法是:

汽车设计成一个类,然后类中会有一个方法是“在路上行驶”,这样可以完成任务,心想简单的要死;但是新需求过来说,汽车还可以在桥上走,好吧!我们毕竟拿着别人的工资,在类中加一个方法“在桥上行驶”。同时产品又来了新的需求(该死的产品):不仅仅汽车可以在桥上和路上行驶,自行车摩托车也可以。这时聪明点的程序员会这样做:把车抽象出来,再写各种行驶的方法,通过继承来实现不同车的不同行驶方式。这时该死的产品说:“不行”,汽车不能在山路行驶,而摩托车和自行车可以。纵使满脑脏话,也要冷静(谁让你是苦逼的程序员呢),如果再这样写下去,代码我自己都不愿意去看了。

 

好吧!直接看新的方法吧(在文中,也许能看到本人对产品的不满。但是,人家也是拿工资的,男人何必难为男人啊):

bridge模式就是:将属性和行为分开,比如上面的例子,属性是车的种类,行为是“在xx上行驶”。如果把行为和属性绑定在一起作为子类,那么必定子类会非常多。但是如果我们把属性和行为分开,再由程序员控制其组合方式。这样子类会大量减少,同时扩展起来也非常容易。

 

根据上面的例子可以知道3个属性类 和3个行为类,可以组成3*3=9种组合方式。这里就不写出例子中的代码实现,放上自己写的一段bridge模式的代码,linux下直接make。代码里面可以看到具体的实现过程。

 

代码下载地址:https://github.com/lengzijian/Bridge

为了方便看代码,附上一张书上的图:

《每日编程》----《设计模式》----《三》----bridge模式_第1张图片

 

 

(今天,似乎对产品有点不公平。。。。。~3~)

你可能感兴趣的:(《每日编程》----《设计模式》----《三》----bridge模式)