所有角色:
- Product: 要制造的產(chǎn)品
- iWorker: 抽象建造者, 純虛函數(shù)描述了所有要實(shí)現(xiàn)的方法
- Worker1, Worker2: 繼承自iWorker, 實(shí)現(xiàn)了所有的虛函數(shù)
- Director: 指揮者, 選取特定的Worker. 傳入一個(gè)IWorker類型的指針來(lái)指定特定Worker.
和用戶屏蔽實(shí)現(xiàn)細(xì)節(jié), 用戶只是接觸了Director.
用戶持有一個(gè)IWorker的指針
IWorker指針可以指向任意一個(gè)new出來(lái)的Worker, 這個(gè)Worker傳入到Director中, 就可以得到一個(gè)特定的Product.
優(yōu)點(diǎn): 客戶端只需要指定特定的Worker并告訴Director就能得到結(jié)果, 其他的什么都不關(guān)心, 不同的Worker并無(wú)關(guān)聯(lián), 直接替換.
缺點(diǎn): 要求不同Worker生產(chǎn)的Product必須有很多共同點(diǎn), 因?yàn)橐肐Worker定義抽象的方法. 如果Product內(nèi)部變化復(fù)雜, 就會(huì)不得不定義很多的建造者(比如Product有10個(gè)維度都是正交變換的, 就會(huì)有n^10個(gè)Worker), 會(huì)導(dǎo)致系統(tǒng)變的很龐大.