简单工厂模式——SimpleFactoryPattern
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
以两个数的加减乘除运算为例,首先我们实现一个计算基类Operation,用于初始化两个数据,并声明一个获得结果的虚方法。
之后我们实现每一个计算方法,并继承Operation基类。
最后创建一个生产计算方法工厂类,这样只需要输入运算符号,工厂就能实例化出合适的对象供我们使用。
简单工厂模式使用于多种方法继承同一基类,通过工厂输入某种条件,快速生成我们所需要的合适的对象。
Operation 计算基类
1 package SimpleFactoryPattern; 2 3 public class Operation { 4 private double numberA=0; 5 private double numberB=0; 6 7 public double getNumberA() { 8 return numberA; 9 } 10 11 public void setNumberA(double numberA) { 12 this.numberA = numberA; 13 } 14 15 public double getNumberB() { 16 return numberB; 17 } 18 19 public void setNumberB(double numberB) { 20 this.numberB = numberB; 21 } 22 public double GetResult() 23 { 24 double result=0; 25 return result; 26 } 27 }
OperationAdd 加法子类
1 package SimpleFactoryPattern; 2 3 public class OperationAdd extends Operation { 4 @Override 5 public double GetResult() { 6 double result=0; 7 result=getNumberA()+getNumberB(); 8 return result; 9 } 10 }
OperationMul 乘法子类
1 package SimpleFactoryPattern; 2 3 public class OperationMul extends Operation { 4 @Override 5 public double GetResult() { 6 double result=0; 7 result=getNumberA()*getNumberB(); 8 return result; 9 } 10 }
OperationFactory 简单工厂类
1 package SimpleFactoryPattern; 2 3 public class OperationFactory { 4 public static Operation createOperate(String operate) 5 { 6 Operation oper=null; 7 switch (operate) 8 { 9 case "+": 10 oper=new OperationAdd(); 11 break; 12 case "*": 13 oper=new OperationMul(); 14 break; 15 } 16 return oper; 17 } 18 }
主函数
1 package SimpleFactoryPattern; 2 3 public class Client { 4 5 public static void main(String[] args) { 6 Operation operationAdd; 7 operationAdd=OperationFactory.createOperate("+"); 8 operationAdd.setNumberA(5); 9 operationAdd.setNumberB(2); 10 System.out.println("5+2="+operationAdd.GetResult()); 11 Operation operationMul; 12 operationMul=OperationFactory.createOperate("*"); 13 operationMul.setNumberB(2); 14 operationMul.setNumberA(5); 15 System.out.println("5*2="+operationMul.GetResult()); 16 } 17 }
运行结果
相关代码:https://github.com/lancelee98/DesignPattern/tree/master/src/SimpleFactoryPattern