简单工厂模式
来源:互联网 发布:阿里云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
阅读全文
1 0
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- 从RGB色转为灰度色算法(转)
- codeforces 486A Calculating Function
- jquery开发:jquery事件绑定解绑机制
- 从Spark架构中透视Sparkjob
- 图片 保存 与读取
- 简单工厂模式
- leetcode— 9. Palindrome Number
- 剑指offer 1
- Android Binder机制----实现自定义的系统服务
- TCP长连接与短连接的区别
- UITextView如何添加placehoderLabel
- iOS证书详解
- 《挑战程序设计竞赛》阅读笔记二 之 ALDS1_2_C Stable Sort
- 算法导论——13.2旋转