第一篇 : 簡單工廠模式 Simple Factory Pattern
Gashapon.cs
using System; namespace DesignPattern.FactoryPattern { /*建立一個轉蛋的類別*/ public class Gashapon { /*玩家被騙的金額*/ private double _Amount = 0; public double Amount { get { return _Amount; } set { _Amount = value; } } /*玩家獲得的虛寶*/ public virtual string GetItem() { string result = ""; return result; } } class AdvancedItem : Gashapon { /*高級實體商品*/ public override string GetItem() { /*高級實體商品邏輯運算,這邊簡略不實作*/ return "高級實體商品"; } } class GeneralItem : Gashapon { /*一般虛寶*/ public override string GetItem() { /*一般爛虛寶邏輯運算,這邊簡略不實作*/ return "一般爛虛寶"; } } interface IFactory { Gashapon CreateGashapon(); } class AdvancedFactory : IFactory { public Gashapon CreateGashapon() { return new AdvancedItem(); } } class GeneralFactory : IFactory { public Gashapon CreateGashapon() { return new GeneralItem(); } } }
主控台
using System; namespace DesignPattern.FactoryPattern { class Run { static void Main(string[] args) { IFactory ghFactory = new AdvancedFactory(); Gashapon gh = ghFactory.CreateGashapon(); Console.WriteLine("大於1000元 : " + gh.GetItem()); ghFactory = new GeneralFactory(); gh = ghFactory.CreateGashapon(); Console.WriteLine("小於1000元 : " + gh.GetItem()); Console.Read(); } } }
工廠方法克服了簡單工廠違背開放-封閉原則的缺點,又維持了封裝物件建立過程的優點
沒有留言:
張貼留言