簡介 簡單工廠模式的實質是由一個工廠類根據傳入的參數,動態決定應該創建哪一個產品類(這些產品類繼承自一個 父類或接口)的實例。不屬於23個GOF模式,但他可以作為工廠方法模式(Factory Method)的一個引導.屬於創建型模 式,又叫做靜態工廠方法(StaticFactory Method),是眾多工廠模式中最簡單實用的模式。 角色構成 抽象產品角色 定義簡單工廠創造的對象父類,可以是一個類、或者一個接口。 [csharp] <span style="font-size:18px;">//聲明創建對象的父類 public class Operation { privat double _numberA=0; //聲明一個雙精度變量 private double _numberB=0; public double NumberA { get {return _numberA;} //當讀取時,取得_numberA=0 set {_numberA=value ;} //可以動態給_numberA賦值 public double NumberA { get {return_numberB;} set {_numberB=value;} } public virtual double GetResult() //重寫GetResult <span> </span>{ double result =0; return result; } }</span> 具體產品角色 他是工廠具體加工的對象 [csharp] <span style="font-size:18px;">// 聲明一個加法操作類,繼承上面的operation class OperatinAdd:operation { public override double GetResult () { double result =0; result =numberA+numberB; return result ; } }</span> 上面是一個加法具體產品角色,還有減法和乘法、除法類似。 工廠角色 simple factory的核心,含所有實例的內部邏輯,可被客戶端等調用,用來創建產品所需的對象。 他定義了簡單工廠的創造的對象的父類,會在創建的對象的時候繼承此類。他可以是一個接口,可以使一個抽象類。 首先構造一個OperationFactory,以此來創建分配各個操作符之間的邏輯關系。比如:加法,就是在我輸入加法符號 時,創建一個加法操作。其他運算符同理。代碼如下 [csharp] <span style="font-size:18px;">//簡單工廠類,定義各個操作符之間邏輯 Public class OperateFactory { public static Operation createoperate(string operate) { operation oper=null; //聲明一個無引用的變量 switch (operate) //分支語句來處理邏輯關系 { case "+": oper=new OperationAdd(); //創建關於加法的操作 break; case "-": oper=new OperationSub(); break; case "*": break; case "/": oper=new OperationDiv(); break; } return oper; } }</span> 以上就是整個的工廠角色,也是整個簡單工廠模式的核心。它處理了操作符之間的邏輯關系,他可以被直接調用用 來處理所輸入的操作符和數字。 總結這個例子,這裡例子分為三部分。我們需要先從簡單工廠模式來說起才顯得完整。 第一部分:構造工廠類,處理操作符之間邏輯關系。 第二部分:創建對象父類。裡面聲明了類的屬性numberA與number B。為下一步在創建對象時直接調用這個屬 性,再利用操作符來對這兩個屬性值進行運算。 第三部分:創建對象,繼承了operation,減少代碼的重復。