第七章在第六章的基础上,进一步的阐述了封装的概念和重要性,并提出了几种具体的封装方法。
封装记录:
将原始的分散的数据结构封装成数据类,可以为使用用户隐藏存储和计算的细节,后续也可以渐进式的重构修改调用方。
封装集合:
对集合类型的数据进行封装,重点是控制集合类型的访问,对集合类型的修改必须经过持有它的类。
以对象取代基本类型
将一些简单的基本类型升级为类对象,适用于在简单类型上需要附加逻辑的场景,比如说电话号码,定义为字符串,但是后续可能需要校验号码,格式化,获取区号之类的行为。
以查询取代临时变量
将临时变量替换为一段查询的代码并抽象成函数,由查询代码返回临时变量值,可以提高代码清晰度,有助于冗长函数分解时的边界拆分
提炼类
将对迭代不断成长扩展的冗余类进行合理的提炼拆分,避免一个类承担过多的责任
内联类
正好于提炼类相反,如果一个类不再承担足够责任(通常是因为重构缩减),可以和其他类合并
隐藏委托关系
对于每个委托关系中的函数,在服务对象通过设立委托函数的形式来消除客户端调用方和受托对应之间的关系,使得受托对象的修改对于客户端是透明的,以获取员工部门经理的级联关系举了一个例子。
移除中间人
与隐藏委托关系相反,过多的委托函数会使得代码过于复杂,服务类过于厚重,有时候也可以适当的让调用方直接使用受托类的方法,尤其是受托类比较稳定,基本不变的情况下
替换算法
抽离待替换的算法到独立函数中,测试其他更优的算法进行替换
封装记录:
将原始的分散的数据结构封装成数据类,可以为使用用户隐藏存储和计算的细节,后续也可以渐进式的重构修改调用方。
封装集合:
对集合类型的数据进行封装,重点是控制集合类型的访问,对集合类型的修改必须经过持有它的类。
以对象取代基本类型
将一些简单的基本类型升级为类对象,适用于在简单类型上需要附加逻辑的场景,比如说电话号码,定义为字符串,但是后续可能需要校验号码,格式化,获取区号之类的行为。
以查询取代临时变量
将临时变量替换为一段查询的代码并抽象成函数,由查询代码返回临时变量值,可以提高代码清晰度,有助于冗长函数分解时的边界拆分
提炼类
将对迭代不断成长扩展的冗余类进行合理的提炼拆分,避免一个类承担过多的责任
内联类
正好于提炼类相反,如果一个类不再承担足够责任(通常是因为重构缩减),可以和其他类合并
隐藏委托关系
对于每个委托关系中的函数,在服务对象通过设立委托函数的形式来消除客户端调用方和受托对应之间的关系,使得受托对象的修改对于客户端是透明的,以获取员工部门经理的级联关系举了一个例子。
移除中间人
与隐藏委托关系相反,过多的委托函数会使得代码过于复杂,服务类过于厚重,有时候也可以适当的让调用方直接使用受托类的方法,尤其是受托类比较稳定,基本不变的情况下
替换算法
抽离待替换的算法到独立函数中,测试其他更优的算法进行替换