將產品的內部表象和產品的產生過程分割開來,從而使一個建造過程產生具有不同的內部表象的產品對象。建造模式使得產品內部表象可以獨立的變化,客戶不必知道產品內部組成的細節。建造模式可以強制實行一種分步驟進行得建造過程。
例子:
1 class House{
2 private String base;
3 private String wall;
4 private String roof;
5 public String getBase() {
6 return base;
7 }
8 public void setBase(String base) {
9 this.base = base;
10 }
11 public String getWall() {
12 return wall;
13 }
14 public void setWall(String wall) {
15 this.wall = wall;
16 }
17 public String getRoof() {
18 return roof;
19 }
20 public void setRoof(String roof) {
21 this.roof = roof;
22 }
23 public String toString() {
24 return this.base+" "+this.wall+" "+this.roof;
25 }
26 }
27
28 interface Builder{
29 public void bulidPartA();
30 public void buildPartB();
31 public void buildPartC();
32 public House getRusult();
33 }
34
35 class HouseBuilder implements Builder{
36 private House house;
37 public HouseBuilder(){
38 house=new House();
39 }
40 public void bulidPartA(){
41 house.setBase("地基建造完成");
42 }
43 public void buildPartB() {
44 house.setWall("牆建造完成");
45 }
46 public void buildPartC() {
47 house.setRoof("屋頂建造完成");
48 }
49 public House getRusult() {
50 return house;
51 }
52 }
53
54 class Director{
55 public House construct(Builder bulider){
56 bulider.bulidPartA();
57 bulider.buildPartB();
58 bulider.buildPartC();
59 return bulider.getRusult();
60 }
61 }
62
63 public class Test {
64 public static void main(String[] args) {
65 Director d=new Director();
66 House house=d.construct(new HouseBuilder());
67 System.out.println(house);
68 }
69 }
這時候,我們就可以任意建造房屋,可以只造地基,只造牆,只造屋頂,任意組合……(- -那還是房子嗎)