首先做道题。 使用面向对象的思想做一个实现加减乘除的计算机功能。
public class Operation
{
private double numberA = 0;
public double NumberA
{
get { return numberA; }
set { numberA = value; }
}
private double numberB = 0;
public double NumberB
{
get { return numberB; }
set { numberB = value; }
}
public virtual double Result()
{
return 0;
}
}
public class Jia : Operation
{
public override double Result()
{
return NumberA + NumberB;
}
}
public class Jian : Operation
{
public override double Result()
{
return NumberA - NumberB;
}
}
public class Cheng : Operation
{
public override double Result()
{
return NumberA * NumberB;
}
}
public class Chu : Operation
{
public override double Result()
{
return NumberA / NumberB;
}
}
// 简单工厂类
public class OperationFactory
{
public static Operation Caculate(string Operate)
{
Operation operate = null ;
switch (Operate)
{
case "+":
operate = new Jia();
break;
case "-":
operate = new Jian();
break;
case "*":
operate = new Cheng();
break;
case "/":
operate = new Chu();
break;
default:
break;
}
return operate;
}
}
// 调用方法 在 Main方法中
Operation o = OperationFactory.Caculate("+");
o.NumberA = 10;
o.NumberB = 2;
Console.WriteLine(o.Result());
总结: 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖