forked from litiansum/DesignPattern
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBuilder.cs
71 lines (63 loc) · 1.45 KB
/
Builder.cs
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
using System;
using System.Collections.Generic;
using System.Text;
namespace Builders
{
/// <summary>
/// 抽象建造者
/// </summary>
abstract class Builder
{
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract Product GetResult();
}
class ConcreteBuilder1 : Builder
{
private Product _product = new Product();
public override void BuildPartA()
{
_product.Add("组件A");
}
public override void BuildPartB()
{
_product.Add("组件B");
}
public override Product GetResult()
{
return _product;
}
}
class ConcreteBuilder2 : Builder
{
private Product _product = new Product();
public override void BuildPartA()
{
_product.Add("组件X");
}
public override void BuildPartB()
{
_product.Add("组件Y");
}
public override Product GetResult()
{
return _product;
}
}
/// <summary>
/// 建造指挥者
/// </summary>
class Director
{
/// <summary>
/// 建造方法,用来指挥建造过程
/// </summary>
/// <param name="builder"></param>
public void Construct(Builder builder)
{
builder.BuildPartA();
builder.BuildPartB();
}
}
}