博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单工厂模式 实现加减乘除
阅读量:5039 次
发布时间:2019-06-12

本文共 1880 字,大约阅读时间需要 6 分钟。

1.创建运算的接口

public interface Operation {    //提供计算两个数字的方法    double getResult(double num1,double num2);}

2.创建对应的加减乘除四个实现类

public class Addition implements Operation { //加法    @Override    public double getResult(double num1, double num2) {        return num1+num2;    }}
public class Minus implements Operation { //减法    @Override    public double getResult(double num1, double num2) {        return num1-num2;    }}
public class Multiplication implements Operation {//乘法    @Override    public double getResult(double num1, double num2) {        return num1*num2;    }}
public class Division implements Operation {//除法    @Override    public double getResult(double num1, double num2) {        return num1/num2;    }}

3.创建工厂类

public class OperationFactory {  //计算机的工厂类    /*     * 工厂模式 是我们最常用的实例化对象的模式!     * 用工厂的方法替代new!     * 虽然代码量没有减少  但是 提高了程序的扩展性!     */    public static  Operation  getOperation(String o){        Operation operation=null; //多态        switch (o) {        case "+":            operation=new Addition();            break;        case "-":            operation=new Minus();            break;        case "*":            operation=new Multiplication();            break;        case "/":            operation=new Division();            break;        }        return  operation;    }}
 

4.创建测试类 运行 测试结果

public class FactoryTest {    public static void main(String[] args) {        Scanner scanner=new Scanner(System.in);        System.out.println("请输入第一个数字:");        double num1 = scanner.nextInt();        System.out.println("请输入运算符:");        String operation = scanner.next();        System.out.println("请输入第二个数字:");        double num2 = scanner.nextInt();        //创建运算的实例对象        Operation o = OperationFactory.getOperation(operation);        //输出结果        System.out.println(o.getResult(num1, num2));    }}

转载于:https://www.cnblogs.com/HHR-SUN/p/7039297.html

你可能感兴趣的文章
Oracle DBMS_SESSION
查看>>
sublime复制当前行到下一行
查看>>
WPF 3D变换应用
查看>>
ArchLinux安装开源VMware Tools
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
一位数据挖掘成功人士 给 数据挖掘在读研究生 的建议
查看>>
Python3.6.0安装
查看>>
hdu1049
查看>>
H5项目常见问题及注意事项
查看>>
索尼(SONY) SVE1512S7C 把WIN8降成WIN7图文教程
查看>>
时间模块 && time datetime
查看>>
jquery自动生成二维码
查看>>
spring回滚数据
查看>>
新浪分享API应用的开发
查看>>
美国专利
查看>>
【JavaScript】Write和Writeln的区别
查看>>
百度编辑器图片在线流量返回url改动
查看>>
我对你的期望有点过了
查看>>
微信小程序wx:key以及wx:key=" *this"详解:
查看>>