简单工厂模式
例一: 计算器
环境: 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 }

浙公网安备 33010602011771号