【設計模式】抽象工廠

抽象工廠

前言

現在這間工廠不僅僅是生產茶了,他還會賣果汁!
這樣原本的茶工廠這名字就不足以容納新的品項了,所以重新命名將它改為飲料工廠
從她衍生跑出兩間工廠,一個是coco,一個是tata

現在跟原本一樣,新增了一個果汁的品項,從果汁衍生出了檸檬汁與橘子汁,這裡跟原本的茶的品項衍生出綠茶跟紅茶的步驟是一樣的。

先創建一個果汁介面

1
2
3
4
5
6
public abstract class Juice { }


衍生出檸檬汁、橘子汁
public class LemonJuice : Juice { }
public class OrangeJuice : Juice { }

這樣在飲料工廠介面就可以新增點果汁的選項(他原本是TeaFactory)

1
2
3
4
5
interface DrinkFactory
{
Tea OrderTea();
Juice OrderJuice();
}

而從飲料工廠介面衍生出來的兩家飲料店,就可以實作它們的方法
這樣兩家飲料店都可以點果汁跟茶了!!

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
public class CoCoFactory : DrinkFactory
{
public Juice OrderJuice()
{
return new LemonJuice();
}

public Tea OrderTea()
{
return new BlackTea();
}

}

public class TaTaFactory : DrinkFactory
{
public Juice OrderJuice()
{
return new OrangeJuice();
}

public Tea OrderTea()
{
return new GreenTea();
}
}

顧客端:

public class Customer : MonoBehaviour {

private void Start()
{

CoCoFactory cocoFactory = new CoCoFactory();
Juice juice1 = cocoFactory.OrderJuice();
Tea tea1 = cocoFactory.OrderTea();

TaTaFactory tataFactory = new TaTaFactory();
Juice juice2 = drinkFactor.OrderJuice();
Tea tea2 = drinkFactor.OrderTea();


}
}

增加工廠

假設我們需要增加一家飲料店
那今天如果又多了一家飲料店叫WaWa的來搶生意,就只需要繼承於DrinkFactory然後實作就可以了

增加品項