Introduce Parameter Object (引入参数对象)
使用场景: 某些参数总是很自然地同时出现。
使用方法: 以一个对象取代这些参数。
//重构前
package 第十章;import java.util.Date;
import java.util.Enumeration;
import java.util.Vector;public class Account {private Vector _entries = new Vector();//此处的 开始 结束 日期总是成对出现,则可以将其替换为一个对象double getFlowBetween(Date start,Date end){double result = 0;Enumeration e = _entries.elements();if(e.hasMoreElements()){Entry each = (Entry) e.nextElement();//并且将比较的行为也可以移到新的对象中去if(each.getDate().equals(start) || each.getDate().equals(end) || each.getDate().after(start) && each.getDate().before(end)){result += each.getValue();}}return result;}}
//重构后
package 第十章;import java.util.Date;
import java.util.Enumeration;
import java.util.Vector;public class Account {private Vector _entries = new Vector();double getFlowBetween(DateRange range){double result = 0;Enumeration e = _entries.elements();if(e.hasMoreElements()){Entry each = (Entry) e.nextElement();if(range.include(each.getDate())){result += each.getValue();}}return result;}
}
package 第十章;import java.util.Date;public class DateRange {private final Date _start;private final Date _end;public DateRange(Date _start, Date _end) {super();this._start = _start;this._end = _end;}boolean include(Date arg) {return (arg.equals(_start) || arg.equals(_end) || arg.after(_start) && arg.before(_end));}}
package 第十章;import java.util.Date;public class Entry {private Date _chargeDate;private double _value;public Entry(Date _chargeDate, double _value) {super();this._chargeDate = _chargeDate;this._value = _value;}public Date getDate() {return _chargeDate;}public double getValue() {return _value;}}
Introduce Parameter Object (引入参数对象)相关推荐
- 重构--Introduce Parameter Object
目录 1.Introduce Parameter Object概念 2.动机 3.案例 3.1. 实操 4.参考文献 1.Introduce Parameter Object概念 某个方法/函数的参数 ...
- java.函数参数太多,Java方法参数太多怎么办—Part 2—引入参数对象,javapart
Java方法参数太多怎么办-Part 2-引入参数对象,javapart 目录 自定义类型 引入参数对象 本文是这个系列的第二篇文章,介绍了通过引入参数对象应对参数过多的问题.如果你也希望参与类似的系 ...
- 重构指南 - 引入参数对象(Introduce Parameter Object)
当一个方法的参数超过3个以上,就可以考虑将参数封装成一个对象.将参数封装成对象后提高了代码的可读性,并且该参数对象也可以供多个方法调用,以后如果增加删除参数,方法本身不需要修改,只需要修改参数对象就可 ...
- Introduce Parameter Object(引入参数对象)
某些参数总是很自然地同时出现 重构:以一个对象取代这些参数
- java方法传对象参数_Java方法中的参数太多,第2部分:参数对象
java方法传对象参数 在上一篇文章中 ,我研究了与方法和构造函数的长参数列表相关的一些问题. 在那篇文章中,我讨论了用自定义类型替换基元和内置类型以提高可读性和类型安全性. 这种方法使方法或构造函数 ...
- Java方法中的参数太多,第2部分:参数对象
在上一篇文章中 ,我研究了与方法和构造函数的长参数列表相关的一些问题. 在那篇文章中,我讨论了用自定义类型替换基元和内置类型以提高可读性和类型安全性. 这种方法使方法或构造函数的众多参数更具可读性,但 ...
- Introduce Null Object(引入Null对象)
Introduce Null Object(引入Null对象) 你需要再三检查某对象是否为null. 将null值替换为null对象. if (customer == null) plan = Bil ...
- ORACLE 12C 插入数据遇到 Error getting generated key or setting result to parameter object错误
今天用springboot和oracle的时候遇到以前的老项目保存数据的时候显示报错 Error getting generated key or setting result to paramete ...
- Error selecting key or setting result to parameter object. Cause: java.sql.SQLSyntaxErrorException
## 通用mapper insertSelective方法报语法错误 报错信息如下 Caused by: java.sql.SQLSyntaxErrorException: You have an e ...
最新文章
- 疫情之下,武汉女生在家中答辩,获得国外博士学位!
- class没有发布到tomcat_基于Tomcat的Websocket范例及permessage-deflate扩展特性的研究
- 开发团队如何完成一个项目?
- Go 从入门到精通(三)字符串,时间,流程控制,函数
- Angular Route数据结构里常用字段使用方法一览
- [VSCode插件推荐] REST Client: 也许是比Postman更好的选择
- [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)
- 2016012072+张济吨+散列函数的应用及其安全性
- mysql5.7.11 linux_CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本教程详解...
- 【学习率预热】Warm up
- 10条建议让你创建更好的jQuery插件(转载)
- jquery中的html代码、文本以及值
- jodconverter 远程配置_jodconverter支持什么格式转换
- xposed+JustTrustMe抓包SSLping
- 纯js实现类似淘宝星级评分功能
- Japanese Student Championship 2021
- 国际结算三大方式之一—信用证 Letter of Credit(L/C)
- 采用软改的方式激活Windows 7
- 前端开发应知网站(转载)
- python_getUniport_从uniport网站中获得指定的字节
热门文章
- gpuz怎么看显存颗粒
- 电脑插上耳机没声音 解决方法
- mac 视频转文字工具
- 红黑树和二叉树有什么区别?
- 注塑机计算机控制器,注塑机微机控制器,Microprocessor-based Controller for PIM,音标,读音,翻译,英文例句,英语词典...
- 计算机打不开 显示正在处理它,Win10系统打开此电脑显示正在处理它的解决方法...
- java标识符命名规范之驼峰命名法
- 申请免费SSL证书教程之华为云20张免费证书
- android竖屏固定,安卓教程:设置竖屏固定壁纸
- 送给前端的你,推荐几篇前端汇总文章。(来自知乎专栏)