简单工厂模式



工厂管理类

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.如果添加新的运算类,需要修改工厂管理类,违背了开放--封闭原则

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值