标签:操作符 oid double res ack extends ext int 并且
通过封装,继承,多态将程序的耦合性降低,让程序容易修改并且易于复用。
假设实现一个简单的计算器程序,输入两数A,B,还有操作符,计算结果。
考虑了扩展,可能会这么写:
创建一个操作符父类,其他的操作符继承于它,并且重写方法:
package com.lin.simplefactory; /** * 操作符父类 * @author lin * */ public class Operation { private double numberA = 0; private double numberB = 0; public double getNumberA() { return numberA; } public void setNumberA(double numberA) { this.numberA = numberA; } public double getNumberB() { return numberB; } public void setNumberB(double numberB) { this.numberB = numberB; } /** * 获取结果 * @return double */ public double getResult(){ double result = 0; return result; } }
创建加法子类和减法子类:
package com.lin.simplefactory; public class OperationAdd extends Operation { @Override public double getResult() { // TODO 获取加法运算结果 double result = 0; result = this.getNumberA()+this.getNumberB(); return result; } } package com.lin.simplefactory; public class OperationSub extends Operation { @Override public double getResult() { // TODO 获取减法运算结果 double result = 0; result = this.getNumberA()-this.getNumberB(); return result; } }
这个时候,假如有一个类,可以帮助我们根据用户输入的操作符进行运算符实例化,那么我们就不需要在客户端进行判断了:
创建一个简单的工厂类:
package com.lin.simplefactory; /** * 简单工厂 * @author lin * */ public class OperationFactory { /** * 根据操作符进行实例化 * @param op * @return Operation */ public static Operation createOperation(String op){ Operation operation = null; switch (op) { case "+": operation = new OperationAdd(); break; case "-": operation = new OperationSub(); break; default: break; } return operation; } }
有了工厂类之后,我们的客户端就可以使用利用多态进行运算操作:
package com.lin.simplefactory; /** * 计算测试 * @author lin * */ public class OperationMain { public static void main(String[] args) { double result = 0; //加法运算 Operation operation = OperationFactory.createOperation("+"); operation.setNumberA(1); operation.setNumberB(2); result = operation.getResult(); System.out.println("result = " + result); //减法运算 operation = OperationFactory.createOperation("-"); operation.setNumberA(1); operation.setNumberB(2); result = operation.getResult(); System.out.println("result = " + result); } }
简单工厂模式至此:当我们需要增加各种各样运算操作的时候,只要需要增加子类,并且到工厂类里面进行switch分支的修改便可。
标签:操作符 oid double res ack extends ext int 并且
原文地址:http://www.cnblogs.com/my-java-code/p/6682033.html