介绍
使用一个单独的类去实现创建实例的过程。实现要操作类和实际操作类的解耦,增加程序可扩展性。
使用
public class SimpleFactory { public static void main(String[] args) { Operation operation = OperationFactory.createOperation("+"); operation.setNumberA(1); operation.setNumberB(4); System.out.println(operation.getResult()); }}/** * 抽象操作类 */abstract class Operation{ private double numberA; private double numberB; public double getNumberA() { return numberA; } public void setNumberA(double numberA) { this.numberA = numberA; } public double getNumberB() { return numberB; } public void setNumberB(double numberB) { this.numberB = numberB; } public abstract double getResult();}/** * 加法操作 */class OperationAdd extends Operation{ @Override public double getResult() { return getNumberA() + getNumberB(); }}/** * 减法操作 */class OperationSub extends Operation{ @Override public double getResult() { return getNumberA() - getNumberB(); }}/** * 乘法操作 */class OperationMul extends Operation{ @Override public double getResult() { return getNumberA() * getNumberB(); }}/** * 除法操作 */class OperationDiv extends Operation{ @Override public double getResult() { if (getNumberB() == 0){ try { throw new Exception("除数不能为0"); } catch (Exception e) { e.printStackTrace(); } } return getNumberA() / getNumberB(); }}/** * 操作工厂类 */class OperationFactory{ public static Operation createOperation(String operation){ if (operation.equals("+")){ return new OperationAdd(); } else if (operation.equals("-")){ return new OperationSub(); } else if (operation.equals("*")){ return new OperationMul(); } else { return new OperationDiv(); } }}复制代码