我的设计模型之建造者模式
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Collections;
6using System.Configuration;
7using System.Reflection;
8namespace KFC
9{
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 Director1 FoodBuilder = new Director1();
15 Director2 FoodBuilder2 = new Director2();
16
17 Console.WriteLine("请输入套餐编号:");
18 string no = Console.ReadLine();
19 string foodType = ConfigurationSettings.AppSettings["No" + no];
20 switch (foodType) {
21 case "NormalBuilder":
22 NormalBuilder Normal = new NormalBuilder();
23 FoodBuilder.Construct(Normal);
24 Food food = Normal.GetFoods();
25 food.Show();
26 break;
27 case "GoldBuilder":
28 GoldBuilder Gold = new GoldBuilder();
29 FoodBuilder.Construct(Gold);
30 Food GoldFood = Gold.GetFoods();
31 GoldFood.Show();
32 break;
33 case "another Director":
34 GoldBuilder GoldDirect2 = new GoldBuilder();
35 FoodBuilder2.Construct(GoldDirect2);
36 Food food2 = GoldDirect2.GetFoods();
37 food2.Show();
38 break;
39 }
40 }
41 }
42 public abstract class FoodClass {
43 public abstract void Construct(Builder builder);
44 }
45 //class FoodMamanger {
46 // public void Construct(Builder builder) {
47 //builder.BuilderHamb();
48 //builder.BuilderCoke();
49 //builder.BuilderChip();
50 // }
51 //}
52 class Director1 : FoodClass {
53 public override void Construct(Builder builder)
54 {
55 builder.BuilderHamb();
56 builder.BuilderCoke();
57 builder.BuilderChip();
58 }
59 }
60 class Director2 : FoodClass {
61 public override void Construct(Builder builder)
62 {
63 builder.BuilderChicken();
64 builder.BuilderChip();
65 builder.BuilderCoke();
66 }
67 }
68 public class Food {
69 /// <summary>
70 /// Food 食物类
71 /// </summary>
72 Hashtable food = new Hashtable();
73 public void add(string FoodName,string Price) {
74 food.Add(FoodName, Price);
75 }
76 public void Show() {
77 // IDictionaryEnumerator MyEnumerator = food.GetEnumerator();
78
79 Console.WriteLine("Food List:");
80 Console.WriteLine("---------------------");
81 string Foodlist = "";
82 foreach (DictionaryEntry De in food) {
83 Foodlist = Foodlist + "\n\n" + De.Key.ToString();
84 Foodlist = Foodlist + De.Value.ToString();
85 }
86 Console.WriteLine(Foodlist);
87 Console.WriteLine("---------------------");
88 Console.ReadLine();
89 }
90 }
91 public abstract class Builder {
92 /// <summary>
93 /// 建造者虚类,添加虚方法
94 /// </summary>
95 public abstract void BuilderHamb();
96 public abstract void BuilderCoke();
97 public abstract void BuilderChip();
98 public abstract void BuilderChicken();
99 public abstract Food GetFoods();
100 }
101 public class NormalBuilder : Builder {
102 private Food NormalFood = new Food();
103 public override void BuilderHamb()
104 {
105 NormalFood.add("Normal Hamb", "¥10.50");
106 }
107 public override void BuilderCoke()
108 {
109 NormalFood.add("Normal Coke", "¥7.00");
110 }
111 public override void BuilderChip()
112 {
113 NormalFood.add("FireChip", "¥7.00");
114 }
115 public override void BuilderChicken()
116 {
117 NormalFood.add("上校鸡块", "¥15.00");
118 }
119 public override Food GetFoods()
120 {
121 return NormalFood;
122 }
123
124 }
125 public class GoldBuilder : Builder {
126 private Food GoldFood = new Food();
127 public override void BuilderHamb()
128 {
129 GoldFood.add("Gold版 Hamb", "¥12.000");
130 }
131 public override void BuilderCoke()
132 {
133 GoldFood.add("Gold版 Coke", "¥8.00");
134 }
135 public override void BuilderChip()
136 {
137 GoldFood.add("Gold版FireChip", "¥8.00");
138 }
139 public override void BuilderChicken()
140 {
141 GoldFood.add("Gold版上校鸡块", "¥16.00");
142 }
143 public override Food GetFoods()
144 {
145 return GoldFood;
146 }
147
148 }
149}
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Collections;
6using System.Configuration;
7using System.Reflection;
8namespace KFC
9{
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 Director1 FoodBuilder = new Director1();
15 Director2 FoodBuilder2 = new Director2();
16
17 Console.WriteLine("请输入套餐编号:");
18 string no = Console.ReadLine();
19 string foodType = ConfigurationSettings.AppSettings["No" + no];
20 switch (foodType) {
21 case "NormalBuilder":
22 NormalBuilder Normal = new NormalBuilder();
23 FoodBuilder.Construct(Normal);
24 Food food = Normal.GetFoods();
25 food.Show();
26 break;
27 case "GoldBuilder":
28 GoldBuilder Gold = new GoldBuilder();
29 FoodBuilder.Construct(Gold);
30 Food GoldFood = Gold.GetFoods();
31 GoldFood.Show();
32 break;
33 case "another Director":
34 GoldBuilder GoldDirect2 = new GoldBuilder();
35 FoodBuilder2.Construct(GoldDirect2);
36 Food food2 = GoldDirect2.GetFoods();
37 food2.Show();
38 break;
39 }
40 }
41 }
42 public abstract class FoodClass {
43 public abstract void Construct(Builder builder);
44 }
45 //class FoodMamanger {
46 // public void Construct(Builder builder) {
47 //builder.BuilderHamb();
48 //builder.BuilderCoke();
49 //builder.BuilderChip();
50 // }
51 //}
52 class Director1 : FoodClass {
53 public override void Construct(Builder builder)
54 {
55 builder.BuilderHamb();
56 builder.BuilderCoke();
57 builder.BuilderChip();
58 }
59 }
60 class Director2 : FoodClass {
61 public override void Construct(Builder builder)
62 {
63 builder.BuilderChicken();
64 builder.BuilderChip();
65 builder.BuilderCoke();
66 }
67 }
68 public class Food {
69 /// <summary>
70 /// Food 食物类
71 /// </summary>
72 Hashtable food = new Hashtable();
73 public void add(string FoodName,string Price) {
74 food.Add(FoodName, Price);
75 }
76 public void Show() {
77 // IDictionaryEnumerator MyEnumerator = food.GetEnumerator();
78
79 Console.WriteLine("Food List:");
80 Console.WriteLine("---------------------");
81 string Foodlist = "";
82 foreach (DictionaryEntry De in food) {
83 Foodlist = Foodlist + "\n\n" + De.Key.ToString();
84 Foodlist = Foodlist + De.Value.ToString();
85 }
86 Console.WriteLine(Foodlist);
87 Console.WriteLine("---------------------");
88 Console.ReadLine();
89 }
90 }
91 public abstract class Builder {
92 /// <summary>
93 /// 建造者虚类,添加虚方法
94 /// </summary>
95 public abstract void BuilderHamb();
96 public abstract void BuilderCoke();
97 public abstract void BuilderChip();
98 public abstract void BuilderChicken();
99 public abstract Food GetFoods();
100 }
101 public class NormalBuilder : Builder {
102 private Food NormalFood = new Food();
103 public override void BuilderHamb()
104 {
105 NormalFood.add("Normal Hamb", "¥10.50");
106 }
107 public override void BuilderCoke()
108 {
109 NormalFood.add("Normal Coke", "¥7.00");
110 }
111 public override void BuilderChip()
112 {
113 NormalFood.add("FireChip", "¥7.00");
114 }
115 public override void BuilderChicken()
116 {
117 NormalFood.add("上校鸡块", "¥15.00");
118 }
119 public override Food GetFoods()
120 {
121 return NormalFood;
122 }
123
124 }
125 public class GoldBuilder : Builder {
126 private Food GoldFood = new Food();
127 public override void BuilderHamb()
128 {
129 GoldFood.add("Gold版 Hamb", "¥12.000");
130 }
131 public override void BuilderCoke()
132 {
133 GoldFood.add("Gold版 Coke", "¥8.00");
134 }
135 public override void BuilderChip()
136 {
137 GoldFood.add("Gold版FireChip", "¥8.00");
138 }
139 public override void BuilderChicken()
140 {
141 GoldFood.add("Gold版上校鸡块", "¥16.00");
142 }
143 public override Food GetFoods()
144 {
145 return GoldFood;
146 }
147
148 }
149}