设计模式-简单工厂模式

设计模式-简单工厂模式

一个简单的计算器

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即可
相关推荐
AC赳赳老秦8 分钟前
政企内网落地:OpenClaw 离线环境深度适配方案,无外网场景下本地化模型对接与全功能使用
java·大数据·运维·python·自动化·deepseek·openclaw
weixin_4491736515 分钟前
在 Java 中,‌线程安全的 List‌ 主要有以下几种实现方式,它们的效率取决于具体的使用场景(尤其是读写比例):
java·线程安全的list
砚底藏山河37 分钟前
股票数据API接口:如何获取股票历历史分时KDJ数据
java·python·maven
MegaDataFlowers2 小时前
运行若依项目
java
lulu12165440782 小时前
JetBrains IDE 终极AI编程方案:CC GUI插件让Claude Code和Codex丝滑运行
java·ide·人工智能·python·ai编程
('-')3 小时前
八股复习2:Java Array list和Linked list
java·开发语言
希望永不加班3 小时前
枚举进阶用法:超越常量的设计模式应用
设计模式
逸Y 仙X3 小时前
Elasticsearch时间类型实战
java·大数据·elasticsearch·搜索引擎·全文检索
Gerardisite4 小时前
企微批量群发消息指南:用 QiWe 省掉人工操作
java·python·机器人·企业微信
summer__77775 小时前
设计模式知识点总结
设计模式