重构改善既有代码设计--重构手法15:Remove Middle Man (移除中间人)
2024-09-25 19:10:57
某个类做了过多的简单委托动作。让客户直接调用受托类。
动机:在Hide Delegate (隐藏委托关系)的“动机”中,谈到了“封装委托对象”的好处。但是这层封装也是要付出代价的,它的代价是:每当客户要使用受托类的新特性时,你就必须在服务端添加一个简单委托函数。随着委托类的特性(功能)越来越多,这一过程让你痛苦不已。服务类完全变成了“中间人”,此时你就应该让客户直接调用受托类。
很难说什么程度的隐藏才是合适的。还好,有了Hide Delegate (隐藏委托关系)和Remove Middle Man (移除中间人),你大可不必操心这个问题。因为你可以在系统运行过程中不断进行调整。随着系统的变化,“合适的隐藏程度”这个尺度也相应改变。6个月前恰如其分的封装,现今可能就显得笨拙。重构的意义在于:你永远不必说对不起—只要把出问题的地方修补好就行了。
做法:1、建立一个函数,用以获得受托对象。
2、对于每个受托函数,在服务类中删除该函数,并让需要调用该函数的客户转为调用受托对象。
3、处理每个受托函数后,编译、测试。
最新文章
- 对 Visual Studio 中的Resharper禁用对某种文件的检测
- Spring-----定时任务Quartz配置
- 微信小程序上传文件
- JS-确认框
- 针对各种浏览器css不兼容的写法
- 和iPhone有关的视图控制器:UIViewController、UITabBarController、UINavigationController及其混合用法
- MySQL分区表(转)
- maven插件的生命周期的详细说明(两)
- bzoj 4824: [Cqoi2017]老C的键盘
- mysql5.7安装和修改密码
- python连接mysql数据库读取数据
- 阿里的fastJson.jar jsonArray 和 list 互转
- C++入门篇一
- leetcode每日刷题计划-简单篇day4
- Python之路(第三十二篇) 网络编程:udp套接字、简单文件传输
- CSS公共清除浏览器默认样式
- yii2.0如何优化路由
- Python练习之用户登录-5
- 【git之】fetch和 pull的区别
- TiDB数据库 mydumper与loader导入数据
热门文章
- 软件工程 speedsnail 第二次冲刺10
- C语言的问卷调查
- sleep(),wait(),yield(),notify()
- iOS- 利用AFNetworking(AFN) - 实现文件上传
- Mac10.11.2 Apache 服务配置
- (六)Jmeter重要组件的执行顺序及作用域
- bootstrap心得
- Additinal Dependencies和#pragma comment(lib,";*.lib";)的分析
- 手机uc不支持伪元素使用animation动画;移动端background-attachment:fixed不兼容性
- Mybatis 点点滴滴