大话设计模式java版--简单工厂模式
来源:互联网 发布:好用的日记本软件 编辑:程序博客网 时间:2024/06/05 21:16
刚刚学习了系统分析与设计,发现设计模式真的是个好东西。因此看了下好久之前买的《大话设计模式》,因此总结下最近的学习的设计模式,废话到此结束。
这里的代码跟书上的差不多,但书上的是C#版的,这里我自己重新写的是Java的。。。。其实都差不多,好不好
现在就简单说说简单工厂模式:
需求:设计个计算器,两个数字之间的加减乘除基本运算。
分析:计算器加减乘除是基本运算,万一用户需要添加新运算,例如n次方。
设计:将算法类抽象为抽象类,具体算法继承算法类。
代码:
运算抽象类:
package com.jing.simpleFactory;public abstract class Operation {public double getNum1() {return num1;}public void setNum1(double num1) {this.num1 = num1;}public double getNum2() {return num2;}public void setNum2(double num2) {this.num2 = num2;}protected double num1;protected double num2;public abstract double getResult() throws Exception;}具体算法:
package com.jing.simpleFactory;public class OperationDiv extends Operation{@Overridepublic double getResult() throws Exception {if(num2 == 0){throw new Exception("除数不能为0");}return num1/num2;}}
package com.jing.simpleFactory;public class OperationAdd extends Operation{@Overridepublic double getResult() {return num1 + num2;}}
package com.jing.simpleFactory;public class OperationMul extends Operation{@Overridepublic double getResult() throws Exception {return num1 * num2;}}
package com.jing.simpleFactory;public class OperationSub extends Operation{@Overridepublic double getResult() {return num1 - num2;}}
简单工厂:
package com.jing.simpleFactory;public class OperationFactory {public static Operation createOperation(String operate){if(operate.equals("+")){return new OperationAdd();}else if(operate.equals("-")){return new OperationSub();}else if(operate.equals("*")){return new OperationMul();}else if(operate.equals("/")){return new OperationDiv();}else{return null;}}}
Main函数:
package com.jing.simpleFactory;public class Test {public static void main(String[] args) {//ver1.0////Test test = new Test();////System.out.println(test.add(1,2));//System.out.println("请输入两个数字");//Scanner scan = new Scanner(System.in);//String num1 = scan.next();//scan = new Scanner(System.in);//String num2 = scan.next();//System.out.println("输入符号");//scan = new Scanner(System.in);//String oper = scan.next();//if(oper.equals("+")){////}else if(oper.equals("-")){////}else if(oper.equals("*")){////}else if(oper.equals("/")){////}//System.out.println(num1 + " " +num2 +" "+ oper);//////ver2.0//Operation oper = new OperationAdd();//oper.setNum1(1.1);//oper.setNum2(2.2);//try {//System.out.println(oper.getResult());//} catch (Exception e) {//e.printStackTrace();//}//ver3.0Operation oper = OperationFactory.createOperation("/");oper.setNum1(1.1);oper.setNum2(3);try {System.out.println(oper.getResult());} catch (Exception e) {e.printStackTrace();}}}
大家结合着书来看会更有益处。其中main函数中有三个版本哦:三个版本也是不断进步的版本。
大家先看看main函数中版本ver1.0:
这是最开始的版本。ui代码与算法代码结合在一起,这种版本的代码修改起来牵连太多。
ver2.0:
在2.0版本中,new生成对象处理交给了客户端处理了。
ver3.0(最终版本 简单设计模式):
在这版本中利用工厂控制了对象生成的处理,如果需求修改的话,就要修改工厂类和添加上相应的算法类。
0 0
- 大话设计模式java版--简单工厂模式
- java大话设计模式之一----简单工厂模式
- java设计模式大话之简单工厂模式
- 《大话设计模式》java实现之简单工厂模式
- 大话设计模式之一【简单工厂模式】
- 大话设计模式-简单工厂模式
- 大话设计模式 --- 简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式---简单工厂模式
- 大话设计模式笔记----简单工厂模式
- 大话设计模式之一简单工厂模式
- 大话设计模式_简单工厂模式
- 大话设计模式之简单工厂模式
- 《大话设计模式》读书笔记--简单工厂模式
- 大话设计模式--简单工厂模式
- 大话设计模式 第一章 简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式-1.简单工厂模式
- leetcode之-题34
- folly->set_sorted_vector
- netty in action fifth chapter Summary
- Ubuntu 搭建PHP环境
- Android开发:相册读取、拍照、图片裁剪和图片上传服务器等功能的实现
- 大话设计模式java版--简单工厂模式
- 【BZOJ】4552 排序
- Mapreduce Patterns, Algorithms, and use cases
- [Modern OpenGL系列(一)]十步搞定OpenGL开发环境
- 系统调用与库函数
- Ubuntu12.04编译openwrt过程中遇到的一些问题及处理方法
- pwnable.kr之bof
- sprlie3创建表
- Java技术要求大杂烩