将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的对象。建造者模式是一步一步创建一个复杂对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们。用户不知道具体的构建细节。
建造者模式的具体的类之间的关系:一个director, 一个抽象Builder,一个具体建造者ConcreteBuilder, 若干个具体Product。用户直接和director打交道,得到相应的Product。而这个过程是这样的,客户向director描述想要的产品的细节,director指挥具体的建造者取出相应产品,用户由此得到相关产品。
director类:构建一个使用Builder接口的对象。(里面只有一个方法用来构建Builder里的接口)。这个类的作用就是为了和客户打交道,客户只需要说明想要的产品的具体细节,director就直接吩咐Builder中的一员去取产品。如:麦当劳的收银员。
抽象Builder类:使用抽象类或者接口来实现。主要是抽象出所有产品类的特性,为创建一个具体的product对象的各个部件指定抽象接口。如:麦当劳员工(抽象的)。
具体的创建者ConcreteBuilder: 实现了Builder中的接口。如:麦当劳员工小王。
具体Product:即客户所需要的产品。
代码示例(C#):


























































































































































































































代码示例(Java):
Director根据客户传来的参数,创建不同的House




















房间类(和模式的角色无关,主要是为房间提供父类)








房间类型一:Aparment




















































房间类型二:SingleFamilyHome






















































客户类:











输出:
这是一间公寓,有5间房间
这间房子有后院
房间1 Master BedRoom
房间2 Second Bedroom
房间3 Thrid Bedroom
房间4 Living room
房间5 Guest room