2011年12月13日星期二
極速理解設計模式系列:簡單工廠模式(Simple Factory Pattern)
四個角色:抽象產品(Product)、具體產品(Concrete Product)、工廠(Creator)、用戶端(Client)
抽象產品(Product):需要創建的各種產品的父類。這類產品有共同的介面。
體產品(Concrete Product):需要創建的具體物件。
工廠(Creator):內部邏輯可以控制生成目標物件。
用戶端(Client):實例化工廠,然後工廠根據傳入參數得到各種產品。調用產品實現不同功能。
實現思路:首先將工廠產生實體,然後使用工廠創建產品賦值給抽象產品的引用,然後通過抽象產品的公共介面調用具體產品的方法以實現功能。
類圖:
應用場景:蘋果公司的工廠生產iphone 4、ipad 2、ipod nano 6。
分析:這裡多種產品都可以運行,所以有一個公共方法,然後抽象為父類。
下面我們在控制台程式去演示一下如何使用Simple Factory Pattern:
一、抽象產品(Product):
//抽象產品(Product)
abstract class Apple
{
public abstract void Run();
}
二、具體產品(Concrete Product):
//具體產品(Concrete Product)
class Iphone : Apple
{
public override void Run()
{
Console.WriteLine("iphone 4 開始運行!");
}
}
//具體產品(Concrete Product)
class Ipad : Apple
{
public override void Run()
{
Console.WriteLine("ipad 2 開始運行!");
}
}
//具體產品(Concrete Product)
class IpodNano : Apple
{
public override void Run()
{
Console.WriteLine("ipod Nano 6 開始運行!");
}
}
三、工廠(Creator):
//工廠(Creator)
class AppleFactory
{
public Apple CreateApple(string productName)
{
switch (productName.ToUpper())
{
case "IPHONE":
return new Iphone();
case "IPAD":
return new Ipad();
case "IPODNANO":
return new IpodNano();
default:
return null;
}
}
}
四、用戶端(Client):
//用戶端(Client)
class Program
{
static void Main(string[] args)
{
AppleFactory factory = new AppleFactory();
Apple iphone= factory.CreateApple("iphone");
iphone.Run();
Apple ipad = factory.CreateApple("ipad");
ipad.Run();
Apple ipodnano = factory.CreateApple("ipodnano");
ipodnano.Run();
Console.ReadLine();
}
}
訂閱:
發佈留言 (Atom)
沒有留言:
發佈留言