1. 程式人生 > >工廠/Builder,橋接/策略

工廠/Builder,橋接/策略

bsp 說過 工廠方法 就是 幫我 今天 不能 而是 註意

1.工廠 vs 抽象工廠

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

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

2.抽象工廠 vs builder模式

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

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

3.橋接模式 vs 策略模式

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

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

工廠/Builder,橋接/策略