简单工厂模式
利用简单工厂模式实现简单两个数的计算器
- 创建父类----操作运算类 Operate类
package com.duan.简单工厂模式;
/**
* @ClassName: Operate
* @author: kdh
* @date: 2022/6/29 20:12
*
* 计算 操作父类
*/
public abstract class Operate {
/**
* 变量值一
*/
private double num1;
/**
* 变量值二
*/
private double num2;
public double getNum1(){
return num1;
}
public void setNum1(double num1){
this.num1=num1;
}
public double getNum2() {
return num2;
}
public void setNum2(double num2) {
this.num2 = num2;
}
public double getResult(){
double result=0;
return result;
}
}
- 创建----具体操作运算类并 继承 Operate类
package com.duan.简单工厂模式;
/**
* @ClassName: OperateAdd
* @author: kdh
* @date: 2022/6/29 20:44
* 加法类
*/
public class OperateAdd extends Operate{
@Override
public double getResult() {
return super.getNum1()+super.getNum2();
}
}
package com.duan.简单工厂模式;
/**
* @ClassName: OperateReduce
* @author: kdh
* @date: 2022/6/29 20:45
*
* 减法类
*/
public class OperateReduce extends Operate{
@Override
public double getResult() {
return super.getNum1()-super.getNum2();
}
}
package com.duan.简单工厂模式;
/**
* @ClassName: OperateMul
* @author: kdh
* @date: 2022/6/29 20:45
*
* 乘法类
*/
public class OperateMul extends Operate{
@Override
public double getResult() {
return super.getNum1()*super.getNum2();
}
}
package com.duan.简单工厂模式;
/**
* @ClassName: OperateDivision
* @author: kdh
* @date: 2022/6/29 20:45
*
* 除法类
*/
public class OperateDivision extends Operate{
@Override
public double getResult() {
if (super.getNum2()==0){
throw new RuntimeException("输入有误");
}
return super.getNum1()/super.getNum2();
}
}
- 创建工厂类(作用:生成具体的操作运算类)
package com.duan.简单工厂模式;
/**
* @ClassName: BeanFactory
* @author: kdh
* @date: 2022/6/29 20:29
*
* 生成具体的操作类工厂
*/
public abstract class BeanFactory {
public static Operate getOperateBean(String opertor){
Operate operate = null;
try {
switch (opertor){
case "+":
operate = new OperateAdd();
break;
case "-":
operate = new OperateReduce();
break;
case "*":
operate = new OperateMul();
break;
case "/":
operate = new OperateDivision();
break;
default:
throw new RuntimeException("输入有误");
}
} catch (Exception e) {
throw new RuntimeException("输入有误");
}
return operate;
}
}
- main方法实现
package com.duan.简单工厂模式;
/**
* @ClassName: JiSuanQi
* @author: kdh
* @date: 2022/6/29 21:01
*/
public class JiSuanQi {
public static void main(String[] args) {
Operate operate = BeanFactory.getOperateBean("*");
operate.setNum1(2);
operate.setNum2(3);
double result = operate.getResult();
System.out.println("计算的值为:"+result);
}
}