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

继续整理下第七章的内容, 关于对象属性的迁移。

1. 迁移函数

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

2. 迁移字段

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

3. 提取类

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

4. 将类内敛话

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

5. 隐藏委托关系

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

6. 移除中间人

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

7. 引入外加函数

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

8. 引入本地扩展

需要为服务类提供一些额外的函数,但该类无法修改,可以新建一个类,是它包含这些额外的函数,让这个扩展品成为源类的子类或者包装类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值