FashionNote 2018-05-19
目的:通过继承操作类,将单个操作分离出来,前端通过工厂类获取实现对象。
用到:继承、多态、封装
factory-》operation-》getResult()
前端通过调用工厂类获取具体实现对象
import java.util.Scanner; public class main { //实现计算器的功能,输入2个数字和1个运算符号 public static void main(String[] args){ Scanner sc = new Scanner(System.in); double numOne = sc.nextDouble(); sc = new Scanner(System.in); String operate = sc.nextLine(); sc = new Scanner(System.in); double numTwo = sc.nextDouble(); operation operation = operationFactory.createOperation(operate); operation.setNumA(numOne); operation.setNumB(numTwo); double result = operation.getResult(); System.out.println(result); } }
写一个工厂类,获取具体对象,这里也可以通过反射获取具体对象
public class operationFactory { public static operation createOperation(String operate){ operation oper = null; switch (operate){ case "+": oper = new operationAdd(); break; case "-": oper = new operationSub(); break; } return oper; } }
具体实现类
public class operation { private double numA = 0; private double numB = 0; public double getNumA() { return numA; } public void setNumA(double numA) { this.numA = numA; } public double getNumB() { return numB; } public void setNumB(double numB) { this.numB = numB; } public double getResult(){ double result = 0; return result; } }
具体实现,重写getResult()方法
public class operationAdd extends operation { @Override public double getResult(){ return getNumA()+getNumB(); } }
Connected to the target VM, address: '127.0.0.1:39957', transport: 'socket' 5 + 4 9.0 Disconnected from the target VM, address: '127.0.0.1:39957', transport: 'socket' Process finished with exit code 0