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(); } }

沒有留言: