在对象之间搬移特性
1、搬移函数
一个函数大量使用其他类的东西,高度耦合:
把函数搬到它所引用的类target class中,将旧函数变成一个单纯的委托函数(delegating method),或是将旧函数完全移除。
当需要使用源类的特性时:
(1)将这个特性也移到target class;(2)建立或使用一个从target class到source的引用〔指涉)关系;(3)将source object当作参数传给target class;(4)如果所需特性是个变量,将它当作参数传给target method。
搬移值域
某个field(值域〕被其所驻class之外的另一个class更多地用到
提炼类
某个class做了应该由两个classes做的事:建立一个新class,将相关的值域和函数从旧class搬移到新class。
将类内联化
某个class没有做太多事情(没有承担足够责任):将class的所有特性搬移到另一个class中,然后移除原class
隐藏委托关系
客户直接调用其server object(服务对象)的delegate class。
在server端(某个class〕建立客户所需的所有函数,用以隐藏委托关系(delegation)。
去掉中间人
某个class做了过多的简单委托动作(simple delegation)。
让客户直接调用delegate(受托类)。
引入外加函数
你所使用的server class需要一个额外函数,但你无法修改这个class。
在client class中建立一个函数,并以一个server class实体作为第一引数(argument) :
引入本地扩展
你所使用的server class需要一些额外函数,但你无法修改这个class。
建立一个新class,使它包含这些额外函数。让这个扩展品成为source class的subclass (子类〕或wrapper(外覆类)。
网友评论