标签:工厂方法模式
实例:
实现一个简单地计算器
UML类图:
实现代码:
/// 运算类
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;
}
}
/// 工厂方法
interface IFactory
{
Operation CreateOperation();
} /// 专门负责生产“+”的工厂
class AddFactory : IFactory
{
public Operation CreateOperation()
{
return new OperationAdd();
}
}
/// 专门负责生产“-”的工厂
class SubFactory : IFactory
{
public Operation CreateOperation()
{
return new OperationSub();
}
}
/// 专门负责生产“*”的工厂
class MulFactory : IFactory
{
public Operation CreateOperation()
{
return new OperationMul();
}
}
/// 专门负责生产“/”的工厂
class DivFactory : IFactory
{
public Operation CreateOperation()
{
return new OperationDiv();
}
} IFactory operFactory = new AddFactory();
Operation oper = operFactory.CreateOperation();
oper.NumberA = 1;
oper.NumberB = 2;
double result=oper.GetResult();说明:
参考资料
-《大话设计模式》
标签:工厂方法模式
原文地址:http://blog.csdn.net/junjun150013652/article/details/45194287