简单工厂模式

来源:互联网 发布:阿里云rds逻辑备份 编辑:程序博客网 时间:2024/06/18 01:22

业务的封装:让业务逻辑和界面逻辑分开,让他们之间的耦合度下降,只有分离开,才能达到容易维护或扩展。

简单工厂模式:用一个单独的类来做创建实例的过程,这就是工厂。

以简单的计算器为例,介绍简单工厂模式。

创建一个Operation类

public  class Operation {private double numA;private double numB;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 Result(){return 0;};}
加、减、乘、除,都继承自operation,并重写Result方法。

加法

public class OperationAdd extends Operation{@Overridepublic double Result() {return getNumA()+getNumB();}}
减法

public class OperationSub extends Operation{@Overridepublic double Result() {return getNumA()-getNumB();}}
乘法

public class OperationMul extends Operation{@Overridepublic double Result() {return getNumA()*getNumB();}}
除法

public class OperationDiv extends Operation{@Overridepublic double Result() {    int result=0;if(getNumB()==0){System.out.println("除数不为0");}else {return getNumA()/getNumB();}return result;}}

工厂类

//工厂类public class OperationFactory {public static Operation createOperation(String state){Operation oper=null;switch (state) {case "+":oper=new OperationAdd();break;case "-":oper=new OperationSub();break;case "*":oper=new OperationMul();break;case "/":oper=new OperationDiv();break;default:break;}return oper;}}
客户端代码

public class client {public static void main(String[] args) {Operation oper1 = null;oper1=OperationFactory.createOperation("/");oper1.setNumA(10);oper1.setNumB(5);double result=oper1.Result();System.out.println(result);}}

当我们需要增加其他运算时,只需要增加相应的运算子类,并在运算类工厂中增加分支即可。

同时,界面显示和我们的业务逻辑也是分离的~






参考博客:http://blog.csdn.net/jiange_zh/article/details/50174001


原创粉丝点击