2013年5月16日 星期四

設計模式:簡單工廠模式 (Simple Factory Pattern)

簡單工廠模式 (Simple Factory Pattern),以下程式碼以 C# 為例

說明:
使用 class 的靜態方法,依不同條件,取得不同物件,並用取得的物件,做類似的事情。
缺點是要新增不同條件時,須修改到類別的靜態方法。

範例:
生產玩具車、玩具狗。


希望達成如下的效果
static void Main(string[] args)
{
    Toy aa;
    aa = ToyFactory.CreateToy("car");
    aa.MakeToy();//製造了 玩具車

    aa = ToyFactory.CreateToy("dog");
    aa.MakeToy();//製造了 玩具狗

    Console.ReadLine();
}
執行結果:
製造了 玩具車
製造了 玩具狗



實現重點在於,將不同條件給靜態方法後(ToyFactory.CreateToy),靜態方法能回傳同類型的物件。

其餘程式碼
abstract class Toy
{
    public abstract void MakeToy();
}

class ToyCar : Toy
{
    public override void MakeToy()
    {
        Console.WriteLine("製造了 玩具車");
    }
}

class ToyDog : Toy
{
    public override void MakeToy()
    {
        Console.WriteLine("製造了 玩具狗");
    }
}

class ToyFactory
{
    public static Toy CreateToy(String cc)
    {
        Toy obj = null;
        switch (cc)
        {
            case "car":
                obj = new ToyCar();
                break;
            case "dog":
                obj = new ToyDog();
                break;
            default:
                throw new Exception("沒有這個類別");

        }
        return obj;
    }
}

相關連結:設計模式整理列表

沒有留言:

張貼留言