读书笔记 ------ 重构 第七章 在代码之间搬移特性
2016-05-23 07:22
791 查看
1:“决定把责任放在哪儿” 试用 方法: Move Method , Move Filed ,如果需要都试用先试用 Move field 再使用 Move Method 。
2:类责任过多 --->Extract class 方法
3:类责任太少---> inline class
4:一个类使用另一个类 ---> Hide Delegate
5:隐藏委托类导致拥有者的接口经常变化---> Romove Middle Man
6:不能访问类的源码但是想将责任移到不可修改的类中 ---> Introduce Foreign Methon(少量函数) & Introduce Local Extension(较多函数)
1:move method
你的程序中,有个函数与所在类之外的另一个类进行更多交流 ---> 在该函数最常引用的类中建立一个有类似行为的新函数。将就函数变成一个单纯的委托函数或是将就函数完全移除。
作用:降低类之间的耦合,使类更简单。
2:move field
你的程序中,某个字段被其所在类之外的另外一个类更多的用到。
做法:在目标类新建一个字段,修改字段所的所有用户,令他们改用新字段。
3:extract class
建立一个新类,将相关的字段和函数从旧类搬移到新类。
4:inline class
如果某个类没有做太多事情,将这个类的所有特性搬移到另一个类中,然后移除原类。
5:hide delegate
客户通过一个委托关系来调用另一个对象,在服务类上建立客户所需的所有函数,用以隐藏委托关系。
6:remove middle man
某个类做了过多的简单委托动作,让客户直接调用受托类。
“合适的隐藏程度”
7:introce foreign method
你需要为提供的服务的类增加一个函数,但你无法修改这个类。
做法:在客户类中建立一个函数,并以第一个参数形式传入一个服务类实例。
8:introduce local extension
你需要为服务类提供一些额外的函数,但你无法修改这个类。
新建一个类。让他包含这些额外函数。让这个扩展品成为原类的子类或包装类。
2:类责任过多 --->Extract class 方法
3:类责任太少---> inline class
4:一个类使用另一个类 ---> Hide Delegate
5:隐藏委托类导致拥有者的接口经常变化---> Romove Middle Man
6:不能访问类的源码但是想将责任移到不可修改的类中 ---> Introduce Foreign Methon(少量函数) & Introduce Local Extension(较多函数)
1:move method
你的程序中,有个函数与所在类之外的另一个类进行更多交流 ---> 在该函数最常引用的类中建立一个有类似行为的新函数。将就函数变成一个单纯的委托函数或是将就函数完全移除。
作用:降低类之间的耦合,使类更简单。
2:move field
你的程序中,某个字段被其所在类之外的另外一个类更多的用到。
做法:在目标类新建一个字段,修改字段所的所有用户,令他们改用新字段。
3:extract class
建立一个新类,将相关的字段和函数从旧类搬移到新类。
4:inline class
如果某个类没有做太多事情,将这个类的所有特性搬移到另一个类中,然后移除原类。
5:hide delegate
客户通过一个委托关系来调用另一个对象,在服务类上建立客户所需的所有函数,用以隐藏委托关系。
6:remove middle man
某个类做了过多的简单委托动作,让客户直接调用受托类。
“合适的隐藏程度”
7:introce foreign method
你需要为提供的服务的类增加一个函数,但你无法修改这个类。
做法:在客户类中建立一个函数,并以第一个参数形式传入一个服务类实例。
8:introduce local extension
你需要为服务类提供一些额外的函数,但你无法修改这个类。
新建一个类。让他包含这些额外函数。让这个扩展品成为原类的子类或包装类。
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍