建造者模式

建造者模式(Builder Pattern)属于创建型模式,它使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

/*
* Copyright,ShanNong Inc,2018 and onwards
*
* Author:fanghua fan
*/

package com.fanghua.designpattrn.build;

import java.util.ArrayList;
import java.util.List;

public class BuliderPattern {
public static void main(String[] args) {
//找到该店的老板和装机人员
Boss boss = new Boss();
Builder builder = new WorkerBuilder();

//沟通需求后,老板叫装机人员去装电脑
boss.command(builder);

//装完后,组装人员搬来组装好的电脑
Computer computer = builder.GetComputer();
//组装人员展示电脑给小成看
computer.Show();
}
}

/**
* 组装电脑操作
*/
abstract class Builder {
//声明为抽象方法,安装CPU
public abstract void BuildCPU();

//声明为抽象方法,安装主板
public abstract void BuildMainboard();

//声明为抽象方法,安装显卡
public abstract void BuildHD();

//返回产品的方法:获得组装好的电脑
public abstract Computer GetComputer();
}

/**
* 老板发布组装电脑任务
*/
class Boss {
// 指挥装机人员组装电脑
public void command(Builder builder) {
builder.BuildCPU();
builder.BuildMainboard();
builder.BuildHD();
}
}

class WorkerBuilder extends Builder {
//创建产品实例
Computer computer = new Computer();

//组装产品
@Override
public void BuildCPU() {
computer.Add("组装CPU");
}

@Override
public void BuildMainboard() {
computer.Add("组装主板");
}

@Override
public void BuildHD() {
computer.Add("组装显卡");
}

//返回组装成功的电脑
@Override
public Computer GetComputer() {
return computer;
}
}

/**
* 电脑概述
*/
class Computer {
//电脑组件的集合
private List<String> parts = new ArrayList<String>();

//用于将组件组装到电脑里
public void Add(String part) {
parts.add(part);
}

public void Show() {
for (int i = 0; i < parts.size(); i++) {
System.out.println("部件" + parts.get(i) + "组装完成");
}
System.out.println("电脑组装完成,启动看看");
}

}

https://blog.csdn.net/carson_ho/article/details/54910597

(全文完)4/2/2018 11:07:24 PM