大话设计模式读后感之工厂模式
来源:互联网 发布:c语言输入输出 编辑:程序博客网 时间:2024/06/06 06:34
一、面向对象思维(OOP)
何为面向对象,我举个例子:在北宋前,人们每当要复印新东西,都需要从新雕刻。当活字印刷术出现后,就省事多了。
活字印刷术作为对象具有属性和方法
1、封装:用的人不需要会雕刻只要认字就行了(便维护)。
2、继承:如果有缺少的字,只需要增加(可扩展)。
3、多态:可以应付各种印刷问题(可复用)。
那么我们使用活字印刷术不就是面向对象了么。
二、简单工厂模式
按照我们对之前面向对象思想的理解,那么我们要提高程序的可维护 、可复用、可扩展。
以实现简单计算器为
将一个简单的功能划分为 业务类、工厂类、逻辑类、磨具类
业务类:
public static void main(String[] args) {Scanner scanner=new Scanner(System.in);Model model=new Model();//引入磨具try {System.out.println("请输入数字A");model.setNumberA(scanner.nextLine());System.out.println("请输入运算符");model.setProcess(scanner.nextLine());System.out.println("请输入数字B");model.setNumberB(scanner.nextLine());FactoryDao dao=new FactoryDao();Model result=dao.operation(model);//工厂加工后的成品System.err.println(result.toString());} catch (IllegalArgumentException e) {// TODO: handle exceptionSystem.out.println("错误!非法参数!");}}
工厂:流水线加工在这里我们使用switch作为逻辑判断
public class FactoryDao {private AlgorithmDao algorithmDao=new AlgorithmDaoImpl();public Model operation(Model model){switch (model.getProcess()) {case "+":model.setResult(algorithmDao.sum(model.getNumberA(), model.getNumberB()));break;case "-":model.setResult(algorithmDao.reduce(model.getNumberA(), model.getNumberB()));break;case "*":model.setResult(algorithmDao.multiplication(model.getNumberA(), model.getNumberB()));break;case "/":model.setResult(algorithmDao.division(model.getNumberA(), model.getNumberB()));break;default:model.setResult("没有找到"+model.getProcess()+"运算符");break;}return model;}}逻辑处理类声明
public interface AlgorithmDao {public String sum(Double a,Double b);public String reduce(Double a,Double b);public String multiplication(Double a,Double b);public String division(Double a,Double b);}逻辑处理类实现
public class AlgorithmDaoImpl implements AlgorithmDao{public String sum(Double a, Double b) {// TODO 自动生成的方法存根return String.valueOf(a+b);}public String reduce(Double a, Double b) {// TODO 自动生成的方法存根return String.valueOf(a-b);}public String multiplication(Double a, Double b) {// TODO 自动生成的方法存根return String.valueOf(a*b);}public String division(Double a, Double b) {// TODO 自动生成的方法存根try{if(b==0)throw new IllegalArgumentException();}catch(IllegalArgumentException ex){return "除数不能为0!";}return String.valueOf(a/b);}}
磨具类//这里我进行了类型转换,如果失败会抛出非法字符异常(该异常为运行异常),并在业务类捕获这个异常。
public class Model {private Double NumberA;private Double NumberB;private String Process;private String Result;public Double getNumberA() {return NumberA;}public void setNumberA(String numberA) {NumberA = Double.valueOf(numberA);}public Double getNumberB() {return NumberB;}public void setNumberB(String numberB) {NumberB =Double.valueOf(numberB);}public String getProcess() {return Process;}public void setProcess(String process) {Process = process;}public String getResult() {return Result;}public void setResult(String result) {Result = result;}public String toString(){return NumberA+Process+NumberB+"="+Result;}}
以上就是简单工厂模式设计
阅读全文
0 0
- 大话设计模式读后感之工厂模式
- 大话设计模式读后感-工厂模式
- 大话设计模式读后感之策略模式
- 大话设计模式读后感之装饰模式
- 大话设计模式读后感之原型模式
- 大话设计模式读后感之外观模式
- 大话设计模式读后感之工厂方法模式(DAO工厂)
- 《大话设计模式》读后感
- 《大话设计模式》读后感
- 大话设计模式读后感
- 读前辈的大话设计模式(一)之简单工厂模式,抒自己的读后感
- 读前辈的大话设计模式(六)之工厂方法模式,抒自己的读后感
- 大话设计模式之 工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之工厂方法模式
- 大话设计模式之抽象工厂模式
- 大话设计模式之简单工厂模式
- 机器学习二 python numpy等安装
- Linux环境编译安装Apache+PHP
- CXF webService 实现文件上传与下载
- java学习笔记之static关键字
- IDEA自动生成TestNg.xml
- 大话设计模式读后感之工厂模式
- 【A ByteOf Python2.7】第1章 介绍
- 写io流程/buffer预览
- Vivado使用技巧(一):使用Tcl在Shell中进行FPGA开发
- vipca报错---PRKA-2019 : Error executing command---10g
- python 微积分计算
- 【分布式存储项目】(3)Nginx服务器配置
- Unity3D项目程序加密1
- jquery表单验证插件jquery.validate.js