简单工厂
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();
}
}