《每日編程》----《設計模式》----《三》----bridge模式

在我看書中的闡述時,真是痛苦萬分。可能是個人理解力比較差吧。最後還是去搜了下。才真正明白該模式的用法;

 

轉載註明出處:http://blog.csdn.net/lengzijian/article/details/8111223

 

比如汽車可在不同的路上行駛,你會怎樣設計?

 

按照我們正常的設計方法是:

汽車設計成一個類,然後類中會有一個方法是“在路上行駛”,這樣可以完成任務,心想簡單的要死;但是新需求過來說,汽車還可以在橋上走,好吧!我們畢竟拿着別人的工資,在類中加一個方法“在橋上行駛”。同時產品又來了新的需求(該死的產品):不僅僅汽車可以在橋上和路上行駛,自行車摩托車也可以。這時聰明點的程序員會這樣做:把車抽象出來,再寫各種行駛的方法,通過繼承來實現不同車的不同行駛方式。這時該死的產品說:“不行”,汽車不能在山路行駛,而摩托車和自行車可以。縱使滿腦髒話,也要冷靜(誰讓你是苦逼的程序員呢),如果再這樣寫下去,代碼我自己都不願意去看了。

 

好吧!直接看新的方法吧(在文中,也許能看到本人對產品的不滿。但是,人家也是拿工資的,男人何必難爲男人啊):

bridge模式就是:將屬性和行爲分開,比如上面的例子,屬性是車的種類,行爲是“在xx上行駛”。如果把行爲和屬性綁定在一起作爲子類,那麼必定子類會非常多。但是如果我們把屬性和行爲分開,再由程序員控制其組合方式。這樣子類會大量減少,同時擴展起來也非常容易。

 

根據上面的例子可以知道3個屬性類 和3個行爲類,可以組成3*3=9種組合方式。這裏就不寫出例子中的代碼實現,放上自己寫的一段bridge模式的代碼,linux下直接make。代碼裏面可以看到具體的實現過程。

 

代碼下載地址:https://github.com/lengzijian/Bridge

爲了方便看代碼,附上一張書上的圖:

 

 

(今天,似乎對產品有點不公平。。。。。~3~)

發佈了81 篇原創文章 · 獲贊 1 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章