简单工厂模式

例一:  计算器

环境:  IDEA  jdk1.8 

涉及原理:

      Java特性:  继承, 封装, 多态.    反射

 1 /**
 2  * 计算器属性的抽象类  (运算类)
 3  */
 4 public abstract class Operation {
 5     protected double numberA = 0;
 6     protected double numberB = 0;
 7     protected double result = 0;
 8     public abstract double getResult();
 9 }
10 
11 
12 /**
13  * (加法运算类)
14  */
15 public class OperationAdd extends Operation {
16     @Override
17     public double getResult() {
18         result = numberA + numberB;
19         return result;
20     }
21 }
22 
23 
24 public class OperationSub extends Operation{
25     @Override
26     public double getResult() {
27         result = numberA - numberB;
28         return result;
29     }
30 }
31 
32 
33 public class OperationMul extends Operation{
34     @Override
35     public double getResult() {
36         result = numberA * numberB;
37         return result;
38     }
39 }
40 
41 
42 public class OperationDiv extends Operation{
43     @Override
44     public double getResult(){
45         try {
46             result = numberA / numberB;
47         } catch (Exception e) {
48             e.printStackTrace();
49             System.out.println("除数不能为0");
50         }
51         return result;
52     }
53 }
54 注意:除数为0时,结果为Infinity(无穷大).  测试的时候不用捕捉异常也可以-----------
55 
56 /**
57  * 工厂
58  */
59 public class OperationFactory {
60     public static Operation createOperate(char sign) {
61         Operation operation = null;
62         switch (sign) {
63             case '+':
64                 operation = new OperationAdd();
65                 break;
66             case '-':
67                 operation = new OperationSub();  
68                 break;
69             case '*':
70                 operation = new OperationMul();
71                 break;
72             case '/':
73                 operation = new OperationDiv();
74                 break;
75             default:
76                 break;
77         }
78         return operation;
79     }
80 }
81 工厂里的方法为:静态方法,
82 
83 /**
84  *测试类
85  */
86 public class Test1 {
87     public static void main(String[] args) {
88         Operation operation;
89         operation=OperationFactory.createOperate('+');
90         operation.numberA=15;
91         operation.numberB=3;
92         double result;
93         result=operation.getResult();
94         System.out.println(result);
95     }
96 }

 

posted @ 2017-03-17 11:14  鬼谷神奇  Views(303)  Comments(0)    收藏  举报