1. 程式人生 > >幾種設計模式間的對比(工廠/Builder&橋接/策略)~

幾種設計模式間的對比(工廠/Builder&橋接/策略)~

1.工廠 vs 抽象工廠

工廠方法模式: 用來加工、生產物件的類。比如說我想要一個汽車類,但是我總不能現場給你造個車出來對吧?於是我找到工廠類,然後工廠幫我把發動機型號選好,輪胎裝好,油漆噴好,然後把車給我去做其他跟車相關的具體操作。 

抽象工廠類,可以派生出多個具體工廠類。 還是上面那個例子,造車的步驟確定好了,先選發動機,再裝輪胎,最後噴漆。但是家用車、商務車和跑車雖然都是車,這三個方面肯定不能一樣啊(跑車的漆也應該更張揚一些),於是抽象一個造車工廠,具體的造家用車、商務車和跑車的類可以在此基礎上派生。

2.抽象工廠 vs builder模式

抽象工廠上面說過了,主要說說builder。

builder其實跟工廠很像,只不過是一步步很清晰的。你可能說,今天我這個造家用車的想給車漆換個顏色,那麼用builder模式只要改一下噴漆那部分呼叫的函式就行了。

3.橋接模式 vs 策略模式

橋接模式其實是種節省時間的操作。我們上面說造家用車和跑車,是兩個不相干的工廠各幹各的,各噴各的漆,那我可不可以不這樣浪費資源,而是先專門弄一個工廠來噴漆,不管什麼車,反正就是噴。於是造能動的車(沒顏色)和讓這臺車變好看(有顏色)之間就架起了一座橋。

策略模式我們實驗中經常用,主要是用來方便選擇實現一個功能的具體方法的。比方說我今天造車,噴漆用上了啞光的工藝,但是過幾天我發現不行,這工藝出來的東西不受歡迎,於是我就趕緊換成了事先就準備好的珠光工藝。注意,這裡事先準備好其實是很重要的,能區別於builder的一點,你可能會說builder也能改噴漆,但人家那是重做,而策略是我開始做之前就有很多選擇,我只不過可以方便地在這幾個策略之間切換罷了。