简单工厂模式

来源:互联网 发布:桌面快捷方式软件 编辑:程序博客网 时间:2024/05/22 13:19

简单工厂模式(Factory Method):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。

package gof23;public class SimpleFactoryTest {public static void main(String[] args) {Operation oper = null;oper = OperationFactory.createOperate("+");oper.numA = 2;oper.numB = 0;System.out.println(oper.getResult());oper = OperationFactory.createOperate("-");oper.numA = 2;oper.numB = 0;System.out.println(oper.getResult());oper = OperationFactory.createOperate("*");oper.numA = 2;oper.numB = 0;System.out.println(oper.getResult());oper = OperationFactory.createOperate("/");oper.numA = 2;oper.numB = 0;System.out.println(oper.getResult());}}class OperationFactory {public static Operation createOperate(String operate) {Operation oper = null;switch(operate) {case "+":oper = new OperationAdd();break;case "-":oper = new OperationSub();break;case "*":oper = new OperationMul();break;case "/":oper = new OperationDiv();break;}return oper;}}class Operation {protected double numA = 0;protected double numB = 0;public double getNumA() {return numA;}public void setNumA(double numA) {this.numA = numA;}public double getNumB() {return numB;}public void setNumB(double numB) {this.numB = numB;}//可被重写的方法,获取运算结果public double getResult() {double result = 0;return result;}}/* * 加法 */class OperationAdd extends Operation{@Overridepublic double getResult() {double result = 0;result = numA + numB;return result;}}/* * 减法 */class OperationSub extends Operation{@Overridepublic double getResult() {double result = 0;result = numA - numB;return result;}}/* * 乘法 */class OperationMul extends Operation{@Overridepublic double getResult() {double result = 0;result = numA * numB;return result;}}/* * 除法 */class OperationDiv extends Operation{//注意除数不能为0@Overridepublic double getResult() {double result = 0;if(Math.abs(numB - 0.0) < 0.00000001) {System.out.println("除数不能为0");return -1;}result = numA / numB;return result;}}

运行结果:

2.02.00.0除数不能为0-1.0


0 0
原创粉丝点击