Administrator
发布于 2024-07-30 / 19 阅读
0
0

简单工厂模式

问题描述

需要使用面向对象实现一个计算器程序,要求输入两个数和运算符,得到结果。

代码实现

定义运算基类

public 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("除数不能为0。");
        }
        result = NumberA / NumberB;
        return result;
    }
}

简单运算工厂类创造运算实例

    public class OperationFactory
    {
        public static Operation createOperation(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;
        }
    }

客户端代码

    public class Calculator
    {
        public static void Main(string[] args)
        {
            Operation oper;
            oper = OperationFactory.createOperation("-");
            oper.NumberA = 1.1;
            oper.NumberB = 2.2;
            Console.WriteLine(oper.GetResult());
        }
    }

结构组成

简单工厂模式由三类主要角色组成:

  1. 运算基类

  2. 具体运算类

  3. 简单工厂类

UML图


评论