设计模式-简单工厂模式

设计模式-简单工厂模式

一个简单的计算器

1.首先写一个运算类Operation类

java 复制代码
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.加减乘除类

java 复制代码
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;
    }
}

3.简单工厂模式

java 复制代码
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;
       }
       return oper;
    }
}

客户端调用

java 复制代码
Operation oper;
oper = OperationFactory.createOperate("+");
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();

简单工厂模式的好处

复制代码
1.之后要增加运算,只需要增加OperationXXX即可
2.之后要改某个运算,只需要修改OperationXXX即可
相关推荐
紫荆鱼28 分钟前
设计模式-状态模式(State)
c++·后端·设计模式·状态模式
旺仔小拳头..1 小时前
Maven相关
java·maven
要一起看日出1 小时前
数据结构---------红黑树
java·数据结构·红黑树
程序定小飞1 小时前
基于springboot的民宿在线预定平台开发与设计
java·开发语言·spring boot·后端·spring
FREE技术1 小时前
山区农产品售卖系统
java·spring boot
星光一影2 小时前
Java医院管理系统HIS源码带小程序和安装教程
java·开发语言·小程序
紫荆鱼2 小时前
设计模式-代理模式(Proxy)
c++·后端·设计模式·代理模式
YA3332 小时前
java设计模式七、代理模式
java·设计模式·代理模式
helloworddm3 小时前
Orleans 自定义二进制协议在 TCP 上层实现的完整过程
java·网络协议·tcp/ip