简单工厂其实不是一个设计模式,而是一个编程习惯:
简单工厂其实不是一个设计模式,而是一个编程习惯:
![](/Images/OutliningIndicators/ContractedBlock.gif)
SimpleFactory_Patterns
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Collections;
5![](/Images/OutliningIndicators/None.gif)
6
namespace SimpleFactory_Patterns
7![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
8
class Program
9![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
10
static void Main(string[] args)
11![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
12
SimplePizzaFactory factory = new SimplePizzaFactory();
13
PizzaStore pizzaStore = new PizzaStore(factory);
14
pizzaStore.orderPizza("Cheese");
15
}
16
}
17![](/Images/OutliningIndicators/InBlock.gif)
18
public abstract class Pizza
19![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
20
protected string name;
21
protected string dough;
22
protected string sauce;
23![](/Images/OutliningIndicators/InBlock.gif)
24
protected ArrayList toppings = new ArrayList();
25![](/Images/OutliningIndicators/InBlock.gif)
26
public void prepare()
27![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
28
Console.WriteLine("Preparing "+ name);
29
Console.WriteLine("Tossing dough
");
30
Console.WriteLine("Adding Sauce
.");
31
Console.WriteLine("Adding toppings:");
32
for (int i = 0; i < toppings.Count; i++)
33![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
34
Console.WriteLine(" "+toppings[i].ToString() );
35
}
36
}
37![](/Images/OutliningIndicators/InBlock.gif)
38
public void bake()
39![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
40
Console.WriteLine("Bake for 25 minutes at 350!");
41
}
42![](/Images/OutliningIndicators/InBlock.gif)
43
public void cut()
44![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
45
Console.WriteLine("Cutting the pizza into diagonal slices");
46
}
47![](/Images/OutliningIndicators/InBlock.gif)
48
public void box()
49![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
50
Console.WriteLine("Place pizza in official PizzaStore box");
51
}
52![](/Images/OutliningIndicators/InBlock.gif)
53
public string getName()
54![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
55
return name;
56
}
57
}
58![](/Images/OutliningIndicators/InBlock.gif)
59
public class CheesePizza:Pizza
60![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
61
public CheesePizza()
62![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
63
name = "Cheese";
64
toppings.Add("A Of Cheese ;");
65
}
66
}
67![](/Images/OutliningIndicators/InBlock.gif)
68
public class PepperoniPizza : Pizza
69![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
70
public PepperoniPizza()
71![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
72
name = "Pepperoni";
73
toppings.Add("A of Pepperoni ;");
74
}
75![](/Images/OutliningIndicators/InBlock.gif)
76![](/Images/OutliningIndicators/InBlock.gif)
77
}
78![](/Images/OutliningIndicators/InBlock.gif)
79
public class ClamPizza : Pizza
80![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
81
public ClamPizza()
82![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
83
name = "Clam";
84
toppings.Add("A of Clam");
85
toppings.Add("B of Clam");
86
}
87![](/Images/OutliningIndicators/InBlock.gif)
88![](/Images/OutliningIndicators/InBlock.gif)
89
}
90![](/Images/OutliningIndicators/InBlock.gif)
91
public class VeggiePizza : Pizza
92![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
93
public VeggiePizza()
94![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
95
name = "Veggie";
96
toppings.Add("A of Veggie");
97
}
98
}
99![](/Images/OutliningIndicators/InBlock.gif)
100![](/Images/OutliningIndicators/InBlock.gif)
101
public class SimplePizzaFactory
102![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
103
public Pizza CreatePizza(string type)
104![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
105
Pizza pizza = null;
106
if (type.Equals("Cheese"))
107![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
108
pizza = new CheesePizza();
109
}
110
else if (type.Equals("Pepperoni"))
111![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
112
pizza = new PepperoniPizza();
113
}
114
else if (type.Equals("Clam"))
115![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
116
pizza = new ClamPizza();
117
}
118
else if (type.Equals("Veggie"))
119![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
120
pizza = new VeggiePizza();
121
}
122
123
return pizza;
124
}
125
}
126![](/Images/OutliningIndicators/InBlock.gif)
127
public class PizzaStore
128![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
129
SimplePizzaFactory factory;
130
public PizzaStore(SimplePizzaFactory factory)
131![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
132
this.factory = factory;
133
}
134![](/Images/OutliningIndicators/InBlock.gif)
135
public Pizza orderPizza(string type)
136![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
137
Pizza pizza;
138
pizza = factory.CreatePizza(type);
139
pizza.prepare();
140
pizza.bake();
141
pizza.cut();
142
pizza.box();
143![](/Images/OutliningIndicators/InBlock.gif)
144
return pizza;
145
}
146
}
147![](/Images/OutliningIndicators/InBlock.gif)
148![](/Images/OutliningIndicators/InBlock.gif)
149![](/Images/OutliningIndicators/InBlock.gif)
150
}
151![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/dot.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
66
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
98
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
122
![](/Images/OutliningIndicators/InBlock.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
125
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
132
![](/Images/OutliningIndicators/InBlock.gif)
133
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/InBlock.gif)
145
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
146
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
147
![](/Images/OutliningIndicators/InBlock.gif)
148
![](/Images/OutliningIndicators/InBlock.gif)
149
![](/Images/OutliningIndicators/InBlock.gif)
150
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
151
![](/Images/OutliningIndicators/None.gif)