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);
}
}