Skip to content

Commit 167541e

Browse files
committed
调整Abstract-Factory文章的编辑细节
1 parent 8203a20 commit 167541e

File tree

1 file changed

+78
-81
lines changed

1 file changed

+78
-81
lines changed

design-mode/Builder-Pattern/Abstract-Factory.md

Lines changed: 78 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212

1313
为了更清晰地理解工厂方法模式,需要先引入两个概念:
1414

15-
**产品等级结构 **产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。
15+
**产品等级结构:** 产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。
1616

17-
**产品族 **在抽象工厂模式中,**产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品**,如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中。
17+
**产品族:** 在抽象工厂模式中,**产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品**,如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中。
1818

1919
**当系统所提供的工厂所需生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构中属于不同类型的具体产品时需要使用抽象工厂模式。**
2020

@@ -59,136 +59,133 @@ Product:具体产品
5959
**抽象产品: 苹果系列**
6060

6161
```java
62-
public interface Apple
63-
{
64-
void AppleStyle();
65-
}
62+
public interface Apple
63+
{
64+
void AppleStyle();
65+
}
6666
```
6767

6868
**抽象产品: 三星系列**
6969

7070
```java
7171
public interface Sumsung
72-
{
73-
void BangziStyle();
74-
}
72+
{
73+
void BangziStyle();
74+
}
7575
```
7676

7777
**具体产品:iphone**
7878

7979
```java
80-
public class iphone implements Apple
81-
{
82-
public void AppleStyle()
83-
{
84-
Console.WriteLine("Apple's style: iPhone!");
85-
}
86-
}
80+
public class iphone implements Apple
81+
{
82+
public void AppleStyle()
83+
{
84+
Console.WriteLine("Apple's style: iPhone!");
85+
}
86+
}
8787
```
8888

8989
**具体产品:ipad**
9090

9191
```java
92-
public class ipad implements Apple
92+
public class ipad implements Apple
93+
{
94+
public void AppleStyle()
9395
{
94-
95-
public void AppleStyle()
96-
{
97-
Console.WriteLine("Apple's style: iPad!");
98-
}
99-
100-
}
96+
Console.WriteLine("Apple's style: iPad!");
97+
}
98+
}
10199
```
102100

103101
**具体产品:note2**
104102

105103
```java
106-
public class note2 implements Sumsung
107-
{
108-
public void BangziStyle()
109-
{
110-
Console.WriteLine("Bangzi's style : Note2!");
111-
}
112-
113-
}
104+
public class note2 implements Sumsung
105+
{
106+
public void BangziStyle()
107+
{
108+
Console.WriteLine("Bangzi's style : Note2!");
109+
}
110+
}
114111
```
115112

116113
**具体产品:tabs**
117114

118115
```java
119116
public class Tabs implements Sumsung
120-
{
121-
public void BangziStyle()
122-
{
123-
Console.WriteLine("Bangzi's style : Tab!");
124-
}
125-
}
117+
{
118+
public void BangziStyle()
119+
{
120+
Console.WriteLine("Bangzi's style : Tab!");
121+
}
122+
}
126123
```
127124

128125
**抽象工厂**
129126

130127
```java
131-
public interface Factory
132-
{
133-
Apple createAppleProduct();
134-
Sumsung createSumsungProduct();
135-
}
128+
public interface Factory
129+
{
130+
Apple createAppleProduct();
131+
Sumsung createSumsungProduct();
132+
}
136133
```
137134

138135
**手机工厂**
139136

140137
```java
141138
public class Factory_Phone implements Factory
142-
{
143-
public Apple createAppleProduct()
144-
{
145-
return new iphone();
146-
}
147-
148-
public Sumsung createSumsungProduct()
149-
{
150-
return new note2();
151-
}
152-
}
139+
{
140+
public Apple createAppleProduct()
141+
{
142+
return new iphone();
143+
}
144+
145+
public Sumsung createSumsungProduct()
146+
{
147+
return new note2();
148+
}
149+
}
153150
```
154151

155152
**pad工厂**
156153

157154
```java
158155
public class Factory_Pad implements Factory
159-
{
160-
public Apple createAppleProduct()
161-
{
162-
return new ipad();
163-
}
164-
165-
public Sumsung createSumsungProduct()
166-
{
167-
return new Tabs();
168-
}
169-
}
156+
{
157+
public Apple createAppleProduct()
158+
{
159+
return new ipad();
160+
}
161+
162+
public Sumsung createSumsungProduct()
163+
{
164+
return new Tabs();
165+
}
166+
}
170167
```
171168

172169
**客户端调用**
173170

174171
```java
175172
public static void Main(string[] args)
176-
{
177-
//采购商要一台iPad和一台Tab
178-
Factory factory = new Factory_Pad();
179-
Apple apple = factory.createAppleProduct();
180-
apple.AppleStyle();
181-
Sumsung sumsung = factory.createSumsungProduct();
182-
sumsung.BangziStyle();
183-
184-
//采购商又要一台iPhone和一台Note2
185-
factory = new Factory_Phone();
186-
apple = factory.createAppleProduct();
187-
apple.AppleStyle();
188-
sumsung = factory.createSumsungProduct();
189-
sumsung.BangziStyle();
190-
Console.ReadKey();
191-
}
173+
{
174+
//采购商要一台iPad和一台Tab
175+
Factory factory = new Factory_Pad();
176+
Apple apple = factory.createAppleProduct();
177+
apple.AppleStyle();
178+
Sumsung sumsung = factory.createSumsungProduct();
179+
sumsung.BangziStyle();
180+
181+
//采购商又要一台iPhone和一台Note2
182+
factory = new Factory_Phone();
183+
apple = factory.createAppleProduct();
184+
apple.AppleStyle();
185+
sumsung = factory.createSumsungProduct();
186+
sumsung.BangziStyle();
187+
Console.ReadKey();
188+
}
192189
```
193190

194191
抽象工厂可以通过多态,来动态设置不同的工厂,生产不同的产品,同时每个工厂中的产品又不属于同一个产品等级结构。

0 commit comments

Comments
 (0)