使用面向对象的方法实现一个二元计算机

1.使用面向对象的方法实现一个二元计算机
2.使用简单工厂模式优化计算机程序,提高计算机的可维护性
3.使用反射和配置文件来优化计算机程序

计算接口
package com.etime1012.test1;

/**
 * @Author zp
 * @Date 2022/10/12 6:53 PM
 * @Description: TODO
 */

public interface Cal {
    //定义算数方法
    double cal(double d1,double d2);
}
加法计算的具体方法
package com.etime1012.test1;

/**
 * @Author zp
 * @Date 2022/10/12 7:06 PM
 * @Description: TODO
 */

/**
 * 算数加法
 */
public class Add implements Cal{
    @Override
    public double cal(double d1, double d2) {
        return d1+d2;
    }
}

减法计算的具体方法
package com.etime1012.test1;

/**
 * @Author zp
 * @Date 2022/10/12 7:07 PM
 * @Description: TODO
 */

/**
 * 算数减法
 */
public class Sub implements Cal{
    @Override
    public double cal(double d1, double d2) {
        return d1-d2;
    }
}

乘法计算的具体方法
package com.etime1012.test1;

/**
 * @Author zp
 * @Date 2022/10/12 7:22 PM
 * @Description: TODO
 */

public class Mul implements Cal{
    @Override
    public double cal(double d1, double d2) {
        return d1*d2;
    }
}

配置文件
+=com.etime1012.test1.Add
-=com.etime1012.test1.Sub
*=com.etime1012.test1.Mul
工厂模块

读取配置文件,通过“+”,“-”。。。获取具体实现算法的包名,反射获取具体实现算法的实现类。在构建此类的一个具体实例返回个客户端。实现动态算法

package com.etime1012.test1;

/**
 * @Author zp
 * @Date 2022/10/12 7:08 PM
 * @Description: TODO
 */

import java.io.FileInputStream;
import java.util.Properties;

/**
 * 算数工厂
 */
public class Factory {

    public static Cal createFactory(String param){

        Cal cal = null;
        try {
            Properties properties = new Properties();
            properties.load(new FileInputStream("src/cal.properties"));
            //获取加法或减法。。。的类
            Class<?> aClass = Class.forName(properties.getProperty(param));

            //返回减法或加法。。。的一个实例
            cal = (Cal)aClass.getConstructor().newInstance();

        }catch (Exception e){
            System.out.println(e);
        }

        return cal;
    }
}

Test类
package com.etime1012.test1;

/**
 * @Author zp
 * @Date 2022/10/12 7:19 PM
 * @Description: TODO
 */

public class Test {

    public static void main(String[] args) {
        double d1 = 1.1;
        double d2 = 1.2;
        String param = "*";

        Cal cal = Factory.createFactory(param);
        double value = cal.cal(d1, d2);
        System.out.println(value);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值