简单工厂模式到工厂模式转化

简单工厂
import java.util.Scanner;

public class Calculate {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println(“请输入数字A:”);
String strNumberA = sc.nextLine();
System.out.println(“请选择运算符号(+.-. *. /):”);
String strOperator = sc.nextLine();
System.out.println(“请输入数字B:”);
String strNumberB = sc.nextLine();
Operation oper;
oper = OperationFactory.createOperate(strOperator.charAt(0));
oper.setNumberA(Double.parseDouble(strNumberA));
oper.setNumberB(Double.parseDouble(strNumberB));
System.out.println(“结畏是:” + oper.getResult());
}
}

abstract class Operation {
private double numberA = 0;
private double numberB = 0;
boolean flag = true;

double getNumberA() {
	return numberA;
}

void setNumberA(double numberA) {
	this.numberA = numberA;
}

double getNumberB() {
	return numberB;
}

void setNumberB(double numberB) {
	this.numberB = numberB;
}

public abstract double getResult();

}

class OperationAdd extends Operation {
@Override
public double getResult() {
// TODO Auto-generated method stub
double reault = 0;
return getNumberA() + getNumberB();
}
}

class OperationSub extends Operation {
@Override
public double getResult() {
// TODO Auto-generated method stub
double reault = 0;
return getNumberA() - getNumberB();
}
}

class OperationMul extends Operation {
@Override
public double getResult() {
// TODO Auto-generated method stub
double reault = 0;
return getNumberA() * getNumberB();
}
}

class OperationDiv extends Operation {
@Override
public double getResult() {
// TODO Auto-generated method stub
double reault = 0;
return getNumberA() / getNumberB();
}
}

class OperationFactory {
public static Operation createOperate(char operate) {
Operation oper = null;
switch (operate) {
case ‘+’:
oper = new OperationAdd();
break;
case ‘-’:
oper = new OperationSub();
break;
case ‘*’:
oper = new OperationMul();
break;
case ‘/’:
oper = new OperationDiv();
break;
}
return oper;
}
}在这里插入图片描述
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
import java.util.Scanner;

public class Calculate1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字A: ");
String strNumberA = sc.nextLine();
System.out.println("请选择运算符号(+.-. . /)😊;
String strOperator = sc.nextLine();
System.out.println("请输入数字B: ");
String strNumberB = sc.nextLine();
IFactory operFactory = null;
switch (strOperator.charAt(0)) {
case ‘+’:
operFactory = new AddFactory();
break;
case ‘-’:
operFactory = new SubFactory();
break;
case '
’:
operFactory = new MulFactory();
break;
case ‘/’:
operFactory = new DivFactory();
break;
}
Operation1 oper = operFactory.CreateOperation();
oper.setNumberA(Double.parseDouble(strNumberA));
oper.setNumberB(Double.parseDouble(strNumberB));
try {
double result = oper.getResult();
System.out.println(“结果是:” + result);
} catch (Exception e) {
e.printStackTrace();
}

}

}

abstract class Operation1 {
private double numberA = 0;
private double numberB = 0;
boolean flag = true;

double getNumberA() {
	return numberA;
}

void setNumberA(double numberA) {
	this.numberA = numberA;
}

double getNumberB() {
	return numberB;
}

void setNumberB(double numberB) {
	this.numberB = numberB;
}

public abstract double getResult();

}

class OperationAdd1 extends Operation1 {
@Override
public double getResult() {
// TODO Auto-generated method stub
double reault = 0;
return getNumberA() + getNumberB();
}
}

class OperationSub1 extends Operation1 {
@Override
public double getResult() {
// TODO Auto-generated method stub
double reault = 0;
return getNumberA() - getNumberB();
}
}

class OperationMul1 extends Operation1 {
@Override
public double getResult() {
// TODO Auto-generated method stub
double reault = 0;
return getNumberA() * getNumberB();
}
}

class OperationDiv1 extends Operation1 {
@Override
public double getResult() {
// TODO Auto-generated method stub
double reault = 0;
return getNumberA() / getNumberB();
}
}

interface IFactory {
Operation1 CreateOperation();
}

class AddFactory implements IFactory {
@Override
public Operation1 CreateOperation() {
// TODO Auto-generated method stub
return new OperationAdd1();
}
}

class SubFactory implements IFactory {
@Override
public Operation1 CreateOperation() {
// TODO Auto-generated method stub
return new OperationSub1();
}
}

class MulFactory implements IFactory {
@Override
public Operation1 CreateOperation() {
// TODO Auto-generated method stub
return new OperationMul1();
}
}

class DivFactory implements IFactory {
@Override
public Operation1 CreateOperation() {
// TODO Auto-generated method stub
return new OperationDiv1();
}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值