使用面向对象实现计算器,目的是体会面向的编程原则,这个计算器有
package com.etime.reflect.calculate;
/**
* @author Nian
* @Date 2022/10/12 18:38
* @description 计算器接口
* @Note
*/
public interface Calculate {
double calculate(double num1, double num2);
}
package com.etime.reflect.calculate;
/**
* @author Nian
* @Date 2022/10/12 18:40
* @description
* @Note
*/
public class Add implements Calculate{
/**
* 加法实现
* @author: Nian
* @Date: 2022/10/12 18:43
* @param: [num1, num2]
* @return: double
**/
@Override
public double calculate(double num1, double num2) {
return num1 + num2;
}
}
package com.etime.reflect.calculate;
/**
* @author Nian
* @Date 2022/10/12 18:41
* @description
* @Note
*/
public class Sub implements Calculate{
/**
* 减法实现
* @author: Nian
* @Date: 2022/10/12 18:43
* @param: [num1, num2]
* @return: double
**/
@Override
public double calculate(double num1, double num2) {
return num1 - num2;
}
}
package com.etime.reflect.calculate;
/**
* @author Nian
* @Date 2022/10/12 18:41
* @description
* @Note
*/
public class Mul implements Calculate{
/**
* 乘法实现
* @author: Nian
* @Date: 2022/10/12 18:43
* @param: [num1, num2]
* @return: double
**/
@Override
public double calculate(double num1, double num2) {
return num1 * num2;
}
}
package com.etime.reflect.calculate;
/**
* @author Nian
* @Date 2022/10/12 18:42
* @description
* @Note
*/
public class Div implements Calculate{
/**
* 除法实现
* @author: Nian
* @Date: 2022/10/12 18:42
* @param: [num1, num2]
* @return: double
**/
@Override
public double calculate(double num1, double num2) {
return num1 / num2;
}
}
package com.etime.reflect.calculate;
import java.io.IOException;
/**
* @author Nian
* @Date 2022/10/12 19:01
* @description 计算机测试类
* @Note
*/
public class Main {
public static void main(String[] args) {
Calculate calculate = null;
CalculateFactory calculateFactory = new CalculateFactory();
try {
calculate = calculateFactory.getCalculate("-");
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
double calculate1 = calculate.calculate(2, 2);
System.out.println(calculate1);
}
}
配置文件
+=com.etime.reflect.calculate.Add
-=com.etime.reflect.calculate.Sub
*=com.etime.reflect.calculate.Mul
/=com.etime.reflect.calculate.Div
package com.etime.reflect.calculate;
import java.io.IOException;
/**
* @author Nian
* @Date 2022/10/12 19:01
* @description 计算机测试类
* @Note
*/
public class Main {
public static void main(String[] args) {
Calculate calculate = null;
CalculateFactory calculateFactory = new CalculateFactory();
try {
calculate = calculateFactory.getCalculate("-");
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
double calculate1 = calculate.calculate(1, 2);
System.out.println(calculate1);
}
}