创建型模式(三):Builder(建造者模式)
将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行得建造过程。
例子:
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 }
这时候,我们就可以任意建造房屋,可以只造地基,只造墙,只造屋顶,任意组合……(- -那还是房子吗)