还是以计算器为例
首先定义Operation接口和Add,Sub,Mul,Div操作
public interface Operation { public double getResult(double a, double b); } public class Add implements Operation { @Override public double getResult(double a, double b) { return a + b; } } public class Sub implements Operation { @Override public double getResult(double a, double b) { return a - b; } } public class Mul implements Operation { @Override public double getResult(double a, double b) { return a * b; } } public class Div implements Operation { @Override public double getResult(double a, double b) { if (b == 0) { throw new IllegalArgumentException("除数不能为0!"); } return a / b; } }
接下来创建工厂类
public class OperationFactory { public static Operation ceateOperation(String op) { Operation operation = null; switch (op) { case "+": operation = new Add(); break; case "-": operation = new Add(); break; case "*": operation = new Add(); break; case "/": operation = new Add(); break; default: break; } return operation; } }
改善一下,使用枚举工厂
public enum OperationEnmu { ADD, MUL, DIV, SUB; public Operation createOperation() { Operation operation = null; switch (this) { case ADD: operation = new Add(); break; case MUL: operation = new Mul(); break; case DIV: operation = new Div(); break; case SUB: operation = new Sub(); break; default: break; } return operation; } }
--后面更新抽象工厂