
相关代码
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace KFC_MacDonald_Bulid
8 {
9 class Program
10 {
11 //客户端代码
12 static void Main(string[] args)
13 {
14
15 KFCBuilder kfc = new KFCBuilder();
16 MealDirector kfcdirector = new MealDirector(kfc);
17 kfcdirector.CreateMeal().Show();
18
19 MBuilder m = new MBuilder();
20 MealDirector mdirector = new MealDirector(m);
21 mdirector.CreateMeal().Show();
22
23 }
24
25 //Meal类
26 class Meal
27 {
28 protected List<Part> _parts = new List<Part>();
29 public void AddPart(Part part)
30 {
31 _parts.Add(part);
32 }
33
34 public void Show()
35 {
36 foreach(Part part in _parts)
37 {
38 part.Show();
39 }
40 }
41 }
42
43 //Part类
44 abstract class Part
45 {
46 public Part()
47 {}
48
49 public abstract void Show();
50 }
51
52 class KFCBurger:Part
53 {
54
55 public KFCBurger():base()
56 { }
57 public override void Show()
58 {
59 Console.WriteLine("KFCBurger is ready");//输出"KFCBurger is ready"
60 }
61 }
62
63 class KFCChips : Part
64 {
65 public KFCChips():base()
66 { }
67 public override void Show()
68 {
69 Console.WriteLine("KFCChips is ready");//输出"KFCChips is ready"
70 }
71 }
72
73 class KFCDrink : Part
74 {
75 public KFCDrink()
76 : base()
77 { }
78 public override void Show()
79 {
80 Console.WriteLine("KFCDrink is ready");//输出"KFCDrink is ready"
81 }
82 }
83
84 class MBurger:Part
85 {
86 public MBurger():base()
87 { }
88 public override void Show()
89 {
90 Console.WriteLine("MBurger is ready");//输出"KFCBurger is ready"
91 }
92 }
93
94 class MChips : Part
95 {
96 public MChips():base()
97 { }
98 public override void Show()
99 {
100 Console.WriteLine("MChips is ready");//输出"MChips is ready"
101 }
102 }
103
104 class MDrink : Part
105 {
106 public MDrink():base()
107 { }
108 public override void Show()
109 {
110 Console.WriteLine("MDrink is ready");//输出"MDrink is ready"
111 }
112 }
113 //抽象建造者
114 abstract class MealBuilder
115 {
116 protected string _g;
117 protected Meal _meal = new Meal();
118 public MealBuilder()
119 { }
120 public abstract void BuildBurger();
121 public abstract void BuildChips();
122 public abstract void BuildDrink();
123 public Meal GetMeal()
124 {
125 return _meal;
126 }
127 }
128
129 //具体建造者
130 class KFCBuilder:MealBuilder
131 {
132 public KFCBuilder():base()
133 { }
134
135 public override void BuildBurger()
136 {
137 _meal.AddPart(new KFCBurger());
138 }
139
140 public override void BuildChips()
141 {
142 _meal.AddPart(new KFCChips());
143 }
144
145 public override void BuildDrink()
146 {
147 _meal.AddPart(new KFCDrink());
148 }
149 }
150
151 class MBuilder : MealBuilder
152 {
153 public MBuilder(): base()
154 {}
155
156
157 public override void BuildBurger()
158 {
159 _meal.AddPart(new MBurger());
160 }
161
162 public override void BuildChips()
163 {
164 _meal.AddPart(new MChips());
165 }
166
167 public override void BuildDrink()
168 {
169 _meal.AddPart(new MDrink());
170 }
171 }
172 //指挥者
173 class MealDirector
174 {
175 private MealBuilder _builder;
176 public MealDirector(MealBuilder builder)
177 {
178 _builder = builder;
179 }
180
181 public Meal CreateMeal()
182 {
183 _builder.BuildBurger();
184 _builder.BuildChips();
185 _builder.BuildDrink();
186
187 return _builder.GetMeal();
188 }
189 }
190
191 }
192 }原文:http://www.cnblogs.com/zhouxixi/p/5097119.html