看完书,用一句话来说简单工厂模式就是通过对类封装,继承,多态使用,来实现业务和界面分离。实现程序的可维护性(修改),可拓展性(添加),可重用性(保留),灵活性(移动). 只是解决对象创建问题
下面是实现计算机简单加减乘除运算来实现的简单工厂模式。
//运算类 实现业务逻辑和界面逻辑的分离 从而容易维护和拓展
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("除数不能为零");
}
result = NumberA / NumberB;
return result;
}
} //工厂主要是创建不能类对象
class OperationFaction
{
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;
}
} static void Main(string[] args)
{ //只是实现调用
Operation oper;
oper = OperationFaction.createOperate("+");
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.getResult();
Console.WriteLine(result);
Console.ReadLine();
}原文:http://blog.csdn.net/buyingfei8888/article/details/20949291