一、简单工厂模式
在我看来该模式的本质就是通过工厂的选择进行对象的创建
先写一个接口
public interface operation { int getResult(int a,int b); }
写两个实现类
public class operationAdd implements operation{ public int getResult(int a, int b) { return a+b; } } public class operationSub implements operation{ public int getResult(int a, int b) { return a-b; } }
写工厂
public class operationFactory { public static operation getOperation(String op) { if(op.equals("+")) { return new operationAdd(); } else if(op.equals("-")) { return new operationSub(); } return null; } }
最后测试
public static void main(String[] args) { System.out.println(operationFactory.getOperation("+").getResult(2, 3)); System.out.println(operationFactory.getOperation("-").getResult(2, 3)); }
二、工厂方法模式
将工厂类抽象,让他的每一个实现对应一个具体创建的操作
public interface operationFactory { public operation getOperation(); } public class addFactory implements operationFactory{ public operation getOperation() { return new operationSub(); } } public class subFactory implements operationFactory{ public operation getOperation() { return new operationAdd(); } }
测试
public static void main(String[] args) { operationFactory of=new addFactory(); System.out.println(of.getOperation().getResult(2, 5)); }
三、抽象工厂
抽象工厂就是把一类相关性高的抽象为一个接口,
比如上面的加法减法可以抽象成一个基本运算工厂。只是在上面两个的情况下进行了更详细的划分。
最后,工厂模式和反射可以很好的结合在一起。