設計模式之工廠方法模式(FactoryMethod)
阿新 • • 發佈:2019-02-07
using System;
using System.Collections.Generic;
using System.Text;
//工廠方法模式(Factory Method):定義一個用於建立物件的介面,讓子類決定例項化哪一個
//類,工廠方法是一個類的例項化延遲到其子類。
//工廠方法是類的建立模式,定義一個建立產品物件的工廠介面,將實際建立工作推遲到子類。namespace FactoryMethod
{
class Factory1
{
}
publicclass Operation
{
privatedouble _numberA =0;
privatedouble _numberB =0;
public double NumberA
{
get { return _numberA; }
set { _numberA = value; }
}
publicdouble NumberB
{
get { return _numberB; }
set { _numberB = value; }
}
publicvirtualdouble GetResult()
{
double result =0;
return result;
}
}
class OperationAdd : Operation
{
publicoverride double GetResult()
{
double result =0;
result = NumberA + NumberB;
return result;
}
}
class OperationSub : Operation
{
publicoverridedouble GetResult()
{
double result =0;
result = NumberA - NumberB;
return result;
}
}
class OperationMul : Operation
{
publicoverridedouble GetResult()
{
double result =0;
result = NumberA * NumberB;
return result;
}
}
class OperationDiv : Operation
{
publicoverridedouble GetResult()
{
double result =0;
if (NumberB ==0)
thrownew Exception("除數不能為0");
result = NumberA / NumberB;
return result;
}
}
//工廠介面interface IFactory
{
Operation CreateOperation();
}
//具體工廠介面class AddFactory : IFactory
{
public Operation CreateOperation()
{
returnnew OperationAdd();
}
}
class SubFactory : IFactory
{
public Operation CreateOperation()
{
returnnew OperationSub();
}
}
class MulFactory : IFactory
{
public Operation CreateOperation()
{
returnnew OperationMul();
}
}
class DivFactory : IFactory
{
public Operation CreateOperation()
{
returnnew OperationDiv();
}
}
}
using System.Collections.Generic;
using System.Text;
//工廠方法模式(Factory Method):定義一個用於建立物件的介面,讓子類決定例項化哪一個
//類,工廠方法是一個類的例項化延遲到其子類。
//工廠方法是類的建立模式,定義一個建立產品物件的工廠介面,將實際建立工作推遲到子類。namespace FactoryMethod
{
class Factory1
{
}
publicclass Operation
{
privatedouble _numberA =0;
privatedouble _numberB =0;
public
{
get { return _numberA; }
set { _numberA = value; }
}
publicdouble NumberB
{
get { return _numberB; }
set { _numberB = value; }
}
publicvirtualdouble GetResult()
{
double result =0;
return result;
}
}
class OperationAdd : Operation
{
publicoverride
{
double result =0;
result = NumberA + NumberB;
return result;
}
}
class OperationSub : Operation
{
publicoverridedouble GetResult()
{
double result =0;
result = NumberA - NumberB;
return result;
}
}
class OperationMul : Operation
{
{
double result =0;
result = NumberA * NumberB;
return result;
}
}
class OperationDiv : Operation
{
publicoverridedouble GetResult()
{
double result =0;
if (NumberB ==0)
thrownew Exception("除數不能為0");
result = NumberA / NumberB;
return result;
}
}
//工廠介面interface IFactory
{
Operation CreateOperation();
}
//具體工廠介面class AddFactory : IFactory
{
public Operation CreateOperation()
{
returnnew OperationAdd();
}
}
class SubFactory : IFactory
{
public Operation CreateOperation()
{
returnnew OperationSub();
}
}
class MulFactory : IFactory
{
public Operation CreateOperation()
{
returnnew OperationMul();
}
}
class DivFactory : IFactory
{
public Operation CreateOperation()
{
returnnew OperationDiv();
}
}
}