使用场景:使用单独的一个类做创造实例的过程,对业务计算,界面进行解耦,添加操作只需要添加新的类继承Operation类,并在工厂类中添加新的操作就可以,不用修改其他操作。
样例代码:
// 算子类 业务逻辑和界面逻辑分开,对业务进行封装 降低之间耦合度,使代码更容易维护或扩展
abstract public class Operation {
abstract public Double operate(double a,double b);
}
//继承算子类,实现具体加法的功能
public class AddOperation extends Operation{
@Override
public Double operate(double a, double b) {
return a+b;
}
}
//继承算子类,实现具体减法的功能
public class SubOperation extends Operation{
@Override
public Double operate(double a, double b) {
return a-b;
}
}
//工厂类
public class FactoryOperation {
private static Operation ope = null;
public static Operation getOpe(String opeS) {
switch (opeS){
case "+":
ope = new AddOperation();
break;
case "-":
ope = new SubOperation();
break;
}
return ope;
}
}
// 客户段类
public class OperationClient {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个值:");
double a = scanner.nextDouble();
System.out.println("请输入第二个值:");
double b = scanner.nextDouble();
System.out.println("请输入运算符号:");
String opr = scanner.next();
System.out.println("结果是?");
Operation operation = FactoryOperation.getOpe(opr);
Double result = operation.operate(a, b);
System.out.println("结果是:" + result);
}
}