简单工厂-简单计算器(仿照《大话设计模式》中示例)
来源:互联网 发布:linux文件服务器有哪些 编辑:程序博客网 时间:2024/06/05 15:01
一个抽象操作类。
四个分别实现了加、减、乘、除的子操作类。
根据用户前台输入的操作符不同,利用工厂生成对应操作类对象,返回的是一个抽象的操作类。
利用多态调用操作类的计算结果方法(不同操作类的算法不一样)。
好处:各操作算法相隔离,互不影响。增加修改比较灵活。
抽象操作类型
package simpleFactory.calculator;public abstract class Operation {protected int numberA;protected int numberB;public int getNumberA() {return numberA;}public void setNumberA(int numberA) {this.numberA = numberA;}public int getNumberB() {return numberB;}public void setNumberB(int numberB) {this.numberB = numberB;}public abstract int getResult();}
具体操作类
package simpleFactory.calculator;public class OperationAdd extends Operation {@Overridepublic int getResult() {// TODO Auto-generated method stubreturn this.getNumberA()+this.getNumberB();}}
操作符枚举
package simpleFactory.calculator;public enum Operator {ADD,SUB,MUL,DIV;}
工厂类
package simpleFactory.calculator;public class OperationFactory { public static Operation createOperation(String operator){ switch(Operator.valueOf(operator)){ case ADD: return new OperationAdd(); case SUB: return new OperationSub(); case MUL: return new OperationMul(); case DIV: return new OperationDiv(); } return null; }}
程序入口
package simpleFactory.calculator;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class MainClass {/** * @param args * @throws IOException * @throws NumberFormatException */public static void main(String[] args) throws NumberFormatException, IOException {// TODO Auto-generated method stubwhile(true){System.out.println("请输入第一位操作数字");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int numberA = Integer.parseInt(br.readLine());System.out.println("请输入第二位操作数字");int numberB = Integer.parseInt(br.readLine());System.out.println("请输入操作符"); String operator = br.readLine(); Operation operation = OperationFactory.createOperation(operator); operation.setNumberA(numberA); operation.setNumberB(numberB); System.out.println(operation.getResult()); System.out.println("是否继续Y/N"); String continueInput = br.readLine(); if(!continueInput.equals("Y")){ break; }}}}
- 简单工厂-简单计算器(仿照《大话设计模式》中示例)
- 大话设计模式学习笔记--简易计算器(简单工厂)
- 大话设计模式之简单工厂模式---------计算器
- 大话设计模式中简单工厂模式的计算器实例的C++代码
- 简单工厂模式C++代码示例---《大话设计模式》笔记
- 简单工厂设计模式计算器
- 大话设计模式之一【简单工厂模式】
- 大话设计模式-简单工厂模式
- 大话设计模式 --- 简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式---简单工厂模式
- 大话设计模式笔记----简单工厂模式
- 大话设计模式之一简单工厂模式
- 大话设计模式_简单工厂模式
- 大话设计模式之简单工厂模式
- 《大话设计模式》读书笔记--简单工厂模式
- 大话设计模式--简单工厂模式
- 大话设计模式 第一章 简单工厂模式
- MFC框架各部分指针获取方式
- Linux驱动编程 step-by-step (五)
- 11.11借光棍节各种优惠和各种坑爹
- C# Preprocessor Directives - #If & # endif
- 开发的几条想法
- 简单工厂-简单计算器(仿照《大话设计模式》中示例)
- 我的笔
- 最大(小)堆的实现
- init.c解析service
- The IE/Win Disappearing List-Background Bug
- 【完美支持iOS5】iFile 1.6.1 含依赖包deb下载
- C# System.Reflection (反射)
- Java实现的简单电话号码储存
- C# System.Attribute (中括号)