简单工厂设计模式

简单工厂设计模式中,工厂类是核心,是与外界直接交互的接口,包含了必要的逻辑判断,根据外界操作决定应该创建哪一个操作(Operation)类的对象。在简单工厂设计模式中,秉承减少冗余代码的原则,将所有操作抽象成一个独立的父类,父类中包含着所有操作需要的共有属性和方法。对于每一个独立的操作通过继承父类,创建出独立的子类.
例如:计算器:

/**
 * Copyright © 2021-2022 AsiaInfo Technologies Limited.
 * All Rights Reserved.
 * -
 * This software is the confidential and proprietary information of
 * AsiaInfo Technologies Limited.
 * ("Confidential Information"). You shall not disclose such
 * Confidential Information and shall use it only in accordance with
 * the terms of the license agreement you entered into with asiainfo.
 * -
 * ASIAINFO MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT.ASIAINFO SHALL NOT BE LIABLE FOR
 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 */

package factory;

/****************************************************************
 * Copyright © 2021,亚信科技(中国)有限公司
 * All Rights Reserved.
 *
 * 文件名称: Operation.java
 * 摘    要:[简要描述本文件的内容]
 *
 * 初始版本:1.0.0
 * 原 作 者:fanxs
 * 完成日期:2022年01月30日 15时44分
 *
 * 当前版本:1.0.0
 * 作    者:fanxs
 * 完成日期:2022年01月30日 15时44分
 *****************************************************************/
public class Operation {
    private double numA =0;
    private double numB=0;

    public double getNumA() {
        return numA;
    }

    public void setNumA(double numA) {
        this.numA = numA;
    }

    public double getNumB() {
        return numB;
    }

    public void setNumB(double numB) {
        this.numB = numB;
    }

    public double GetResult() throws Exception {
        double result=0;
        return result;
    }
}
public class OperationAdd  extends  Operation{
    @Override
    public double GetResult() {
        double result=0;
        result=getNumA()+getNumB();
        return result;
    }
}
public class OperationDiv  extends  Operation{
    @Override
    public double GetResult() throws Exception {
        double result=0;
        if(getNumB()==0){
            throw  new Exception("除数不能为0");
        }return getNumA()/getNumB();
    }
}
public class OperationMub  extends  Operation{
    @Override
    public double GetResult() {
        double result=0;
        result=getNumA()*getNumB();
        return result;
    }
}
public class OperationSub extends Operation{
    @Override
    public double GetResult() {
        double result=0;
        result=getNumA()-getNumB();
        return result;
    }
}
public class OperationFactory {

    public static Operation createOperate(String Operate){
        Operation operation=null;
        switch(Operate){
            case "+":
                operation=new OperationAdd();
                break;
            case "-":
                operation=new OperationSub();
                break;
            case "*":
                operation=new OperationMub();
                break;
            case "/":
                operation =new OperationDiv();
                break;
        }
        return operation;
    }
}
public class Client {
    public static void main(String[] args) throws Exception {
        Operation operation= OperationFactory.createOperate("+");
        operation.setNumA(10);
        operation.setNumB(2);
        System.out.println(operation.GetResult());
         operation= OperationFactory.createOperate("-");
        operation.setNumA(10);
        operation.setNumB(2);
        System.out.println(operation.GetResult());
         operation= OperationFactory.createOperate("*");
        operation.setNumA(10);
        operation.setNumB(2);
        System.out.println(operation.GetResult());
         operation= OperationFactory.createOperate("/");
        operation.setNumA(10);
        operation.setNumB(2);
        System.out.println(operation.GetResult());

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值