简单工厂模式

通过一个计算器的例子来学习简单工厂

1、Operation 运算类

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;
    }
}

2、加减乘除类

class OpertionAdd:Operation  //加法类
{
    public override double GetResult()
    {
        double result=0;
        result =NumberA+NumberB;
        return result;
    }
}

class OpertionSub:Operation  //减法类
{
    public override double GetResult()
    {
        double result=0;
        result =NumberA-NumberB;
        return result;
    }
}

class OpertionMul:Operation  //乘法类
{
    public override double GetResult()
    {
        double result=0;
        result =NumberA*NumberB;
        return result;
    }
}


class OpertionDiv:Operation  //除法类
{
    public override double GetResult()
    {
        double result=0;
        if(NumberB==0)
        {
            throw new Exception("除数不能为0");
        }
        result =NumberA/NumberB;
        return result;
    }
}

3、简单运算工厂类

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;
        }
    }
}

4、客户端代码

Operation oper;
oper=OperationFactory.CreateOperate("+");
oper.NumberA=1;
oper.NumberB=2;
double result=oper.GetResult();

 

转载于:https://www.cnblogs.com/shanoon/p/5452033.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值