4.工厂模式在开发中的运用
来源:互联网 发布:删除旧版windows 编辑:程序博客网 时间:2024/05/29 03:52
写一个简单的计算器。
先看普通的简单计算器
MainClass.java
import java.util.Scanner;public class MainClass { public static void main(String[] args) { // 1.接受控制台输入 System.out.println("---计算器程序---"); System.out.println("输入第一个操作数"); Scanner scanner = new Scanner(System.in); String strNum1 = scanner.nextLine(); System.out.println("输入运算符"); String oper = scanner.nextLine(); System.out.println("输入第二个操作数"); String strNum2 = scanner.nextLine(); double result = 0; double num1 = Double.parseDouble(strNum1); double num2 = Double.parseDouble(strNum2); // 2.进行运算 if ("+".equals(oper)) { result = num1 + num2; } else if ("-".equals(oper)) { result = num1 - num2; } else if ("*".equals(oper)) { result = num1 * num2; } else if ("/".equals(oper)) { result = num1 / num2; } // 3.返回结果 System.out.println(strNum1 + oper + strNum2 + "=" + result); }}
缺点:完全面向过程设计,缺少代码重用
看运用了工厂模式的计算器
Operation.javapublic abstract class Operation { private double num1; private double num2; 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; } public abstract double getResult(); }AddOperation.javapublic class AddOperation extends Operation { @Override public double getResult() { double result = this.getNum1() + this.getNum2(); return result; } }SubstractionOperation.javapublic class SubtractionOperation extends Operation { @Override public double getResult() { double result = this.getNum1() - this.getNum2(); return result; } }OperationFactory.javapublic interface OperationFactory { public Operation getOperation(); }AddOperationFactory.javapublic class AddOperationFactory implements OperationFactory{ public Operation getOperation() { return new AddOperation(); } }SubstractionOperationFactory.javapublic class SubstractionOperationFactory implements OperationFactory{ public Operation getOperation() { return new SubtractionOperation(); } }MainClass.javaimport java.util.Scanner; public class MainClass { public static void main(String[] args) { //1.接受控制台输入 System.out.println("---计算器程序---"); System.out.println("输入第一个操作数"); Scanner scanner = new Scanner(System.in); String strNum1 = scanner.nextLine(); System.out.println("输入运算符"); String oper = scanner.nextLine(); System.out.println("输入第二个操作数"); String strNum2 = scanner.nextLine(); double result = 0; double num1 = Double.parseDouble(strNum1); double num2 = Double.parseDouble(strNum2); //2.进行运算 if("+".equals(oper)) { OperationFactory factory = new AddOperationFactory(); Operation operation = factory.getOperation(); operation.setNum1(num1); operation.setNum2(num2); result = operation.getResult(); } //3.返回结果 System.out.println(strNum1 + oper + strNum2 + "=" + result); } }
- 4.工厂模式在开发中的运用
- java设计模式_工厂模式在开发中的运用
- java设计模式之---工厂模式在开发中的运用
- Java设计模式之四(经典面试题:工厂模式在开发中的运用)
- Java设计模式之四(经典面试题:工厂模式在开发中的运用)
- 设计模式在游戏中的运用(工厂模式)
- 工厂模式及SDK源码中的运用
- 设计模式在综合前置中的运用(一)--工厂方法模式
- 工厂方法在Ext扩展中的运用
- 建造者模式在实际开发中的运用
- 建造者模式在实际开发中的运用
- 【iOS开发】类簇--抽象工厂模式在OC中的使用
- 实例讲解设计模式中的命令模式在iOS App开发中的运用
- 工厂模式简单运用
- Factory Method模式在框架中的运用
- state模式在游戏中的运用
- 设计模式在项目中的运用
- [转载]设计模式在项目中的运用
- JSP中如何解决相对路径的??
- Linux操作系统下终端乱码的终极解决方案 export LANG=zh_CN.UTF-8 export LANG=en_US
- matlab GUI 参数传递
- 序列化技术详解
- 工作流--osworkflow
- 4.工厂模式在开发中的运用
- android休眠与唤醒驱动流程分析
- jni中的本地引用和全局引用
- 泛型详解
- webkit 绘制部分代码解析
- EABI和OABI
- 各大IT公司2012校园招聘笔试面试整理
- eclipse.ini
- c#中的流,字节,字符,字符串