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

6 篇文章 0 订阅
5 篇文章 0 订阅

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

 

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

 

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

 

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

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

 

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

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

 

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

 

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

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

 

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值