设计模式之简单工厂模式

简单工厂模式——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

posted @ 2019-01-15 12:41  lancelee98  阅读(271)  评论(0编辑  收藏  举报