1. 简单工厂模式
约 322 字大约 1 分钟
2026-02-03
UML类图举例
实现一个加减乘除的运算器。只需要输入运算符号,工厂就实例化出合适的对象,通过多态,返回父类的方式实现了计算器的结果。如果我们需要增加各种复杂运算,比如平方根,立方根,自然对数,正弦余弦等,只要增加相应的运算子类就可以了。
抽象运算类:
public abstract class Operation
{
public double NumberA { get; set; }
public double NumberB { get; set; }
public abstract double GetResult();
}具体运算类:
public class OperationAdd : Operation
{
public override double GetResult()
{
return NumberA + NumberB;
}
}
public class OperationSub : Operation
{
public override double GetResult()
{
return NumberA - NumberB;
}
}
public class OperationMul : Operation
{
public override double GetResult()
{
return NumberA * NumberB;
}
}
public class OperationDiv : Operation
{
public override double GetResult()
{
if (NumberB == 0)
throw new DivideByZeroException("除数不能为0");
return NumberA / NumberB;
}
}简单工厂类:
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;
default:
throw new ArgumentException("不支持的运算符");
}
return oper;
}
}客户端调用:
Operation oper = OperationFactory.CreateOperate("+");
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();
Console.WriteLine(result); // 输出 3