首頁 » 設計模式 » 工廠方法(Factory method)

工廠方法(Factory method)

作者:

分類:

工廠方法(Factory method)

概念

工廠方法在程式設計中是很常使用的建立型模式之一,目的是延遲物件生成的時機到子類別中,也就是把物件生成的過程寫在工廠內,使用者只需要呼叫工廠製作出想要的物件即可。

範例

以兩種常見的工業通訊方式(Ethernet、SerialPort)舉例,今天有兩個控制器,A是使用網路通訊;B是使用SerialPort通訊,此時該如何整合??以下是我常用的方式,如果改天要加入第三種,只需要新增相關的物件及對應的列舉,不須修改核心程式,整個系統包含介面就會隨之更新。

//**************
//* author: cian
//* 20231001
//**************

/* 連線參數來源(for UI Binding) */
enum ConnectionTypeEnum
{
    Ethernet,
    SerialPort,
}

/* 連線物件共用介面 */
interface IConnector 
{
    void Connect();
    void Disconnect();
}

class Ethernet : IConnector { /*Implement*/ }
class SerialPort : IConnector { /*Implement*/ }

static class ConnectorFactory
{
    static IConnector GenConnector(ConnectionTypeEnum type)
    {
        switch(type)
        {
     	    case Ethernet:
                return new Ethernet();
     	    case SerialPort:
                return new SerialPort();
            default:
                throw new NotImplementedException();
        }
    }
}

/* 實際應用 */
IConnector myConnector = ConnectorFactory.GenConnector(connType);
myConnector.Connect();
myConnector.Disconnect();

結語

工廠模式可以有很多種不同的變化,但基本概念是相通的,很多設計模式也是由此去延伸(例如抽象工廠),只要按實際的程式架構去應用就能寫出漂亮的程式。

以上為學習過程的問題紀錄
如果文章有誤,歡迎前輩留言請不吝指教。

「cian」的個人頭像

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *