簡單工廠模式
面向對象的程序設計編程思想,是通過封裝,繼承,多態把程序的耦合度降低,用設計模式使得程序更加的靈活,容易修改,並且易於複用。下面我們就通過簡單工廠模式的例子來具體瞭解一下。
簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法模式。簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。通過學習一個計算器的例子來了解。
實例:
運算類:
//Operation運算類
public class Operation
{
private double _numberA = 0;
private double _numberB = 0;
public double NumberA
{
get { return _numberA ;}
set { _numberA = value; }
}
public double NumberB
{
get { return _numberB; }
set { _numberB = value; }
}
public virtual double GetResult()
{
double result = 0;
return result;
}
}
加減乘除類
//加減乘除類
//加法
class OperationAdd : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
//減法
class OperationSub : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
}
//乘法
class OperationMul : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
}
//除法
class OperationDiv : Operation
{
public override double GetResult()
{
double result = 0;
if (NumberB==0)
{
throw new Exception("除數不能爲0.");
}
result = NumberA / NumberB;
return result;
}
}
簡單工廠模式
//簡單工廠模式
public class OperationFactory
{
public static Operation createOperate(string operate)
{
Operation oper = null;
switch (operate)
{
case "+";
oper =new OperationAdd();
break;
case "-";
oper =new OperationSub();
break;
case "*";
oper =new OperationMul();
break;
case "/";
oper =new OperationDiv();
break;
}
return oper;
}
}
客戶端代碼
//客戶端代碼
class Program
{
static void Main(string[] args)
{
Operation oper;
oper = OperationFactory.createOperate("-");
oper.NumberA = 1;
oper.NumberB = 1;
double result = oper.GetResult();
}
}
類圖:
簡單模式優點:工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的信息,決定究竟應該創建哪個具體類的對象. 不必管對象究竟如何創建及如何組織的.明確了各自的職責和權利,有利於整個軟件體系結構的優化。
缺點:由於工廠類集中了所有實例的創建邏輯,違反了高內聚責任分配原則,將全部創建邏輯集中到了一個工廠類中;它所能創建的類只能是事先考慮到的,如果需要添加新的類,則就需要改變工廠類了。