工厂管理类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 简单工厂模式
{
/// <summary>
/// 操作工厂
/// </summary>
class OperationFactory
{
/// <summary>
/// 创建当前运算实例
/// </summary>
/// <param name="strOperation"></param>
/// <returns></returns>
public static Operation CreateOperation(string strOperation)
{
Operation operation = null;
switch (strOperation)
{
case "+":
operation = new OperationAdd();
break;
case "-":
operation = new OperationSub();
break;
case "*":
operation = new OperationMul();
break;
case "/":
operation = new OperationDiv();
break;
default:
Console.WriteLine("输入的操作符号有误!");
break;
}
return operation;
}
}
}
界面逻辑类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 简单工厂模式
{
class Program
{
static void Main(string[] args)
{
//界面逻辑代码
Console.WriteLine("简单工厂模式测试");
Console.Write("请输入数字A=>");
double numberA = Convert.ToDouble(Console.ReadLine());
Console.Write("请输入操作符号【+、-、*、/】=>");
string strOperation = Console.ReadLine();
Console.Write("请输入数字B=>");
double numberB = Convert.ToDouble(Console.ReadLine());
Operation operation = OperationFactory.CreateOperation(strOperation);
operation.NumberA = numberA;
operation.NumberB = numberB;
double result = operation.GetResult();
Console.WriteLine("测试结果是=>" + result);
}
}
}
在一下情况下,当需要管理多个子类,且需要更好的维护,才好用。
1.基类架构不变
2.修改继承基类的子类
3.修改工厂管理类
缺点
1.如果添加新的运算类,需要修改工厂管理类,违背了开放--封闭原则