
工廠方法(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();
結語
工廠模式可以有很多種不同的變化,但基本概念是相通的,很多設計模式也是由此去延伸(例如抽象工廠),只要按實際的程式架構去應用就能寫出漂亮的程式。
以上為學習過程的問題紀錄
如果文章有誤,歡迎前輩留言請不吝指教。
發佈留言