java工厂方法模式实现计算器

本文展示了如何使用Java的工厂方法设计模式来创建一个简单计算器,包括加、减、乘、除四种运算。每个运算类型由一个具体的Calculator子类实现,如Addition、Subtraction等。工厂类如AddFactory、SubFactory等则负责根据运算符创建对应的Calculator实例。然而,由于使用了多处继承,代码的耦合度较高,不适合实际开发。
摘要由CSDN通过智能技术生成

本文使用java二十三种设计模式中的工厂方法模式实现简单计算器。

一、项目工程:

二、类图:

 三、Calculating类(计算器的父类):

package 工厂方法模式;

public abstract class Calculating {
    public double NumberA;
    public double NumberB;
    public abstract double GetResult();
    public void setNumberA(double numberA) {
        NumberA = numberA;
    }

    public void setNumberB(double numberB) {
        NumberB = numberB;
    }
}
四、Addition类(加法类):
package 工厂方法模式;

public class Addition extends Calculating {
    public double GetResult(){
        return NumberA+NumberB;
    }
}
五、Subtraction类(减法类):
package 工厂方法模式;

public class Subtraction extends Calculating {
    public double GetResult(){
        return NumberA-NumberB;
    }

}
六、Multiplication类(乘法类):
package 工厂方法模式;

public class Multiplication extends Calculating {
    @Override
    public double GetResult() {
        return NumberA*NumberB;
    }
}
七、Division(除法类):
package 工厂方法模式;

public class Division extends Calculating {
    @Override
    public double GetResult() {
        if(NumberB !=0){
            return NumberA/NumberB;
        }
        else {
            System.out.println("除数需为非零数!!!");
        }
        return 0;
    }
}
八、CalculatingFactory类(工厂类):
package 工厂方法模式;
public abstract class CalculatingFactory{

    public abstract Calculating getCalculating(String x);
}
九、AddFactory类(加法工厂类):
package 工厂方法模式;
public class AddFactory extends CalculatingFactory {
    public  Calculating getCalculating(String X){
        return new Addition();
            }
}
十、SubFactory类(减法工厂类):
package 工厂方法模式;
public class SubFactory extends CalculatingFactory {
    public  Calculating getCalculating(String X){
        return new Subtraction();
    }
}

 

十一、MultFactory类(乘法工厂类):
package 工厂方法模式;
public class MultFactory extends CalculatingFactory {
    public  Calculating getCalculating(String X){
         return new Multiplication();
    }
}
十二、DivFactory类(除法工厂类):
package 工厂方法模式;
public class DivFactory extends CalculatingFactory {
    public  Calculating getCalculating(String X){
        return new Division();
    }
}
十三、Client类(客户端):
package 工厂方法模式;
import java.util.Scanner;
public class Client {
    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);
        System.out.println("输入一个数");
        double x=scanner.nextInt();
        System.out.println("输入符号");
        String ope=scanner.next();
        System.out.println("再输入一个数");
        double y=scanner.nextInt();
        CalculatingFactory addFactory= new AddFactory();
        CalculatingFactory multFactory= new MultFactory();
        CalculatingFactory subFactory= new SubFactory();
        CalculatingFactory divFactory= new DivFactory();
        Calculating calculating;
        switch (ope){
            case "+": calculating= addFactory.getCalculating(ope); break;//当输入符号为"+"时创建加法类对象下面以此类推。
            case "-": calculating= subFactory.getCalculating(ope); break;
            case "*": calculating= multFactory.getCalculating(ope); break;
            case "/": calculating= divFactory.getCalculating(ope); break;
            default:calculating=null;
        }

        calculating.setNumberA(x);
        calculating.setNumberB(y);
        double result =calculating.GetResult();
        System.out.println("结果:"+result);
    }
}

十四、运行结果:

最后:本文是基于类图实现的代码,所以使用多处继承,故耦合度较高,不适用于实际开发。原创不易,代码仅供参考,如有错误欢迎斧正! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值