目录

1、Introduce Parameter Object概念

2、动机

3、案例

3.1、 实操

4、参考文献


1、Introduce Parameter Object概念

某个方法/函数的参数列表比较长或者容易发生变化,这个时候我们需要引入一个Data Class数据类来封装参数列表,这种重构手法就叫做Introduce Parameter Object(引入参数对象)。引入了
参数对象之后,参数列表就会比较稳定,当需要增加参数时,我们只需要在Data Class中增加对应的属性即可,方法签名不需要变更,客户端代码也就不需要发生比较大的变更,不会出现编译错误。

2、动机

场景1:某些参数总是很自然地同时出现。
             有一个方法,参数列表当中,startDate与endDate总是会一起出现,并且经常要比较两者的大小,这个时候,我们可以设计一个Data Class并命名为DateRange,里面有startDate与endDate两个属性域,并提供startDate与endDate校验方法,这样就引入了DateRange这个参数对象。

场景2:方法参数列表过长。
             刚开始,方法只有两、三个参数,后来为了实现这个方法的复用,需要增加新的参数,以实现功能的复用,再后来,因为同样的理由,这个方法一直在增加新的参数,以实现新的功能。这样就会直接导致,方法签名不稳定,导致客户端代码需要进行相应的变更,当该方法的引用点比较多,这就会发生散弹性修改,是一个灾难。为了解决这个问题,我们可以引入参数对象,每当要增加新的参数扩展方法功能时,我们只需要在参数对象中,加入对应的属性即可,客户端代码也比较稳定。

3、案例

现在有一个方法public void run(String tableName) ,我们目前有这么一个需求,需要传入另外一个参数tablesName(原始多表名字符串),这个时候,我们使用Introduce Parameter Objecct重构手法来引入参数对象。

3.1、 实操

选中方法中的参数名称tableName,并使用快捷键打开"Introduce Parameter Objecct"窗口

点击“确认”之后

现在,我们加一个参数tablesName就非常简单了,只需要在RunParameter增加一个属性tablesName即可,并重载构造器,参数对象一般设计为不可变的

4、参考文献

重构--Introduce Parameter Object相关推荐

  1. 重构指南 - 引入参数对象(Introduce Parameter Object)

    当一个方法的参数超过3个以上,就可以考虑将参数封装成一个对象.将参数封装成对象后提高了代码的可读性,并且该参数对象也可以供多个方法调用,以后如果增加删除参数,方法本身不需要修改,只需要修改参数对象就可 ...

  2. Introduce Parameter Object(引入参数对象)

    某些参数总是很自然地同时出现 重构:以一个对象取代这些参数

  3. Introduce Parameter Object (引入参数对象)

    使用场景: 某些参数总是很自然地同时出现. 使用方法: 以一个对象取代这些参数. //重构前 package 第十章;import java.util.Date; import java.util.E ...

  4. Introduce Null Object(引入Null对象)

    Introduce Null Object(引入Null对象) 你需要再三检查某对象是否为null. 将null值替换为null对象. if (customer == null) plan = Bil ...

  5. Introduce Null Object

    今天继续总结<重构>这本书中的一个重构手法,Introduce Null Object.写这个手法是因为它确实很巧妙,在实际编程中经常会遇到这种情况,前人总结出来了这么一个经典的手法,当然 ...

  6. Cause: java.sql.SQLException: Invalid parameter object type. Expected 'com.jd.sns.biz.api.domain.Plu

    java.sql.SQLException: Invalid parameter object type. Expected 'java.util.Map' but found 'java.lang. ...

  7. ORACLE 12C 插入数据遇到 Error getting generated key or setting result to parameter object错误

    今天用springboot和oracle的时候遇到以前的老项目保存数据的时候显示报错 Error getting generated key or setting result to paramete ...

  8. Error selecting key or setting result to parameter object. Cause: java.sql.SQLSyntaxErrorException

    ## 通用mapper insertSelective方法报语法错误 报错信息如下 Caused by: java.sql.SQLSyntaxErrorException: You have an e ...

  9. Error selecting key or setting result to parameter object.

    Error selecting key or setting result to parameter object. :选择键或将结果设置为参数对象时出错. 'LAST_INSERT_ID' is n ...

最新文章

  1. tornado压力测试
  2. html常用标签6-表单标签
  3. [CUDA OpenCV]GPU加速的计算机视觉学习资源下载
  4. springboot搞定全局自定义异常
  5. android中json解析及使用 (下)
  6. UESTC_神秘绑架案 CDOJ 881
  7. ORACLE WebLogic Server 安装部署
  8. 电路中各种地,数字地DGND、模拟地AGND、功率地PGND、电源地GND、交流地AGND、大地EGND的区别及处理
  9. Scrapy 爬取阳光热线问政平台存储为json 文件(使用 CrawlSpider)
  10. 台式计算机和台式机,台式电脑i5和i7的区别_台式机i5和i7的区别有多大
  11. Python打包为exe文件
  12. 1,标准差的计算 2,标准分数z-score
  13. 大话操作系统(11)进程间通信
  14. android 模拟器目录,Android 获取APP 文件目录 模拟器检测
  15. 构建基于词典的Lucene分类器
  16. 声称AI存在意识,谷歌工程师遭解雇:违反保密协议
  17. 【Linux】Linux操作的一些基本指令
  18. centos7限制cpu使用_CentOS7中CPU频率调整问题
  19. 图灵社区 : 阅读 : 十年码农聚会报道——让高龄老码农social起来
  20. echarts 省市区县地图展示

热门文章

  1. Dadroit JSON Viewer 查看json文件的利器
  2. 【生活感悟】达克效应--要自信不要自负,越努力越幸运
  3. 用微信扫一扫功能扫描二维码下载安装APK不能用,不能打开APK下载链接的解决方案
  4. 小程序实现轨迹回放代码
  5. 交通信息服务器图片,交通标志图片大全(图文解释)
  6. 顺丰控股2019财报解读
  7. 12C安装oracle,Oracle 12C安装
  8. JAVA毕业设计健身房信息管理系统计算机源码+lw文档+系统+调试部署+数据库
  9. 微信小程序电子优惠券领取,淘宝客,微信小程序商城
  10. 计算理论基础-1-FA有穷自动机与Pumping_Lemma泵定理