設計模式總結 Builder模式

2021-04-14 05:30:00 字數 1729 閱讀 6058

一、對builder模式解耦「過程」和「部件」的理解:

首先以組裝汽車為例,一部汽車可以由發動機、方向盤、車輪等部件組成,而要把這些部件組裝成一部完整的汽車則需要乙個複雜的過程。相同的部件在不同的汽車工廠組裝出來的就成為不一樣的汽車。這就是builder模式的最原始需求原型

從中我們可以看出,如果我們能夠提供這樣一種服務:客戶只需要提供給我們必要的零件,並告知我們最終要組裝成的汽車型別,由汽車裝配公司負責整個後端的裝配工作-對客戶來說是完全透明的。那麼我們將可以實現「部件」和「過程」的解耦。只要我們願意,相同的部件在我們的手裡就可以變成不同的產品

二、builder模式的各個組成部分:

對builder模式組成的理解,我們可以從兩個不同的角度來看--客戶和工廠

首先從客戶的角度來看,客戶能夠看到、感受到的只有產品和部件,從工廠的角度來看,他們感興趣的是如何生產這些零件以及如何把這些零件組裝成乙個合格的產品。

所以我們可以將builder模式分成四個組成部分:

·產品:public inte***ce product

·零件:public inte***ce part

·生產零件的過程:public inte***ct builder

·組裝零件的過程:public class director

其中產品、零件都是乙個介面,其下面可以有多個實現子類。我們重點關注的「生產零件的過程」和「組裝零件的過程」

同樣型別的產品其「生產零件的過程」不盡相同,所以我們必須將其定義成乙個介面,由各個零件的生產廠家去實現具體的過程。如下所示:

public inte***ce builder

public class concretebuilder implements builder ;

public void buildpartb() ;

public void buildpartc() ; 

public product getresult() ;

}ok,既然已經廠家已經知道了如何生產零件了,那麼剩下來的事情就是:1). 根據客戶要求去生產這些零件 2). 組裝零件成產品

組裝成品由director類負責,它負責和具體的builder類互動,告訴builder我要生產零件,將builder類生產好的零件組裝成成品,如下所示:

public class director

// 將部件parta partb partc最後組成複雜物件

//這裡是將車輪、方向盤和發動機組裝成汽車的過程

public void construct()

}三、builer模式的使用:

·建立乙個builer物件:          builder builer = new concretebuiler();

·建立乙個director物件:       director director = new director(builder);

·呼叫director物件構建產品:director.construct();

·返回構建好的產品:             product product = builder.getresult();

設計模式 Builder模式

bulder模式是一步步建立乙個複雜物件的建立模型,它允許使用者在不知道內部構建細節 的情況下可以更精細地控制物件的構造流程該模式為將構建複雜物件的過程和它的部件 解耦,使得構建過程和部件的表示隔離開來。將乙個負責物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示 3.1 相同的方法,不...

設計模式 Builder模式

網路上有人將它定義為 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的物件。所以建造者模式適合於乙個具有較多的零件 屬性 的產品 物件 的建立過程。由五個部分構成 1.product concreatebuilder建立該產品的內部表示並定義它的裝配過程。2.builder介面 ...

設計模式 Builder模式

一貫風格,直接上 package created by mingchenchen on 2017 6 14.public class user public void setid string id public string getcountry public void setcountry st...