2013年11月11日 星期一

C# Design Pattern - Factory Method 工廠方法模式

Factory Method是意思是「當這個物件的具體化時會面臨著劇烈的變化,但它卻有穩定的介面,對此變化而作的對應。」因此,Factory Method提供一種封裝機制來隔離出「易變物件」的變化,不隨需求的變化而變化,從而保持系統中其它依賴的物件。
所以程式師的意圖,就必須定義一個用戶創建物件的Interface,讓子類別決定實作哪一個類別。

創造一個飛機工廠
public abstract class AirplaneFactory
{
    public abstract Airplane AirplaneCreate();
}

產生飛機及功能:
public abstract class Airplane
{
    public abstract void StartUp();
    public abstract void TakeOff();
    public abstract void Land();

}

產生各家不同航空的飛機,可以 是華航、復興....等等:
public class ChinaAirlinesFactory : AirplaneFactory
{
    public override Airplane AirplaneCreate()
    {
        return new ChinaAirlines();
    }

}

class Transportation
{
    static void Main(string[] args)
    {
        Console.WriteLine("請輸入Factory Method 號碼:");
        Console.WriteLine("******************************");
        Console.WriteLine("Factory Method No");
        Console.WriteLine("ChinaAirlinesFactory");
        Console.WriteLine("******************************");
        int no = Int32.Parse(Console.ReadLine().ToString());
        string factoryType = ConfigurationManager.AppSettings["No" + no];
        AirlinesFactory factory = (AirlinesFactory)Assembly.Load("FactoryMehtod").CreateInstance("FactoryMehtod." + factoryType);
        Airplane airplane = factory.AirplaneCreate();
        airplane.StartUp();
        airplane.TakeOff();
        airplane.Land();
    }
}

1.Factory Method主要用於隔離類別物件的使用者和具體類型之間的耦合關係。
2.Factory Method通過面向物件的手法,將所要創建的具體物件延遲到子類別,實現擴展而非更改的策略,能改善解決了這種緊密的耦合關係。
3.Factory Mehtod解決「單個物件」的需求變化。

-雲遊山水為知已逍遙一生而忘齡- 電腦神手

沒有留言:

張貼留言