您的位置:首页 > 编程语言

[读书笔记] 重构改善既有代码的设计(5)

2017-05-04 22:09 375 查看
继续整理下第七章的内容, 关于对象属性的迁移。

1. 迁移函数

当某个函数与其不所属类有着更密切的关系时,考虑把该函数移到新类中,在新类中建立一个有着类似行为的函数,移除就函数,或者将旧函数变成一个单纯的委托函数。这样做的目的是减少类间的耦合,保证类更简单。

2. 迁移字段

跟第一条类似,如果类的某个成员被另一个类更加频繁的使用,则考虑移到另一个类中,注意这里的使用不一定是直接使用,也有可能是通过取值设值函数访问该属性。

3. 提取类

某个类做了应该由两个类做的事,那么将该类拆分成两个类,拆开相应的属性和方法,原因是一个类应该是一个清楚的抽象,类在持续开发的过程中,会不断的加入新的属性和方法,难免会把本不属于该类的职责加入到其中。

4. 将类内敛话

某个类所做的事情太少,则把它合并到现有的某个类中,这通常是因为之前的重构动作移走了这个类的职责。

5. 隐藏委托关系

客户端通过一个委托来调用另一个对象,在服务类上建立客户端所需的所有函数,用已隐藏委托关系,即如果某个客户端先通过服务对象的字段得到另一个对象,然后调用后者的函数,那么客户端必须知晓这一层委托关系,万一委托关系发生变化,客户也得到相应变化。可以在服务对象上放置一个简单的委托函数,将委托关系隐藏起来,除去这种依赖。也就是将这种调用关系client.service.other.method(),加上一层包装:client.service.method(),其中service的method()中调用other.method()。

6. 移除中间人

某个类做了过多的简单委托动作,让客户端直接调用受托类。

7. 引入外加函数

你需要为提供服务的类增加一个函数,但有无法修改这个类,那么,在客户端类中建立一个函数,并以第一参数的形式传入一个服务类实例。

8. 引入本地扩展

需要为服务类提供一些额外的函数,但该类无法修改,可以新建一个类,是它包含这些额外的函数,让这个扩展品成为源类的子类或者包装类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息