第十一章 处理概括关系

 

第十一章 处理概括关系 Dealing with Generalization

11.1  Pull Up Field(值域上移)

症状:两个subclasses拥有相同的值域

解决办法:将此一值移至superclass.

 

11.2  Pull Up Method(函数上移)

症状:有些函数,在各个subclass中产生完全相同的结果。

解决办法:将该函数移至superclass.

 

11.3  Pull Up Constructor Body(构造函数体上移)

症状:你在各个子类中拥有一些构造函数,它们的本体(代码)几乎完全一致。

解决办法:在superclass中新建一个构造函数,并在subclass构造函数中调用它。

 

11.4  Push Down Method(函数下移)

症状: superclass中的某个函数只与部分(而非全部)subclass有关。

解决办法:将这个函数移到相关的那些subclasses中去。

 

11.5  Push Down Field(值域下移)

症状:superclass中的某个值域与部分(而非全部)subclass有关。

解决办法:将这个值域移到相关的那些subclasses中去。

 

11.6  Extract Subclass(提炼子类)

症状:class中的某些特性(features)只被某些(而非全部)实体(instance)用到

解决办法:新建一个subclass,将上面所说的那一部分特性移到subclass中。

 

11.7  Extract Superclass(提炼超类)

症状:两个classes有相似特性(similar features)

解决办法:为这两个class建立一个superclass,将相同特性移至superclass.

 

11.8  Extract Interface(提炼接口)

症状:若干客户使用class接口中的同一子集;或者,两个classes的接口有部分相同。

解决办法:将相同子集提炼到一个独立接口中。

 

11.9  Collapse Hierarchy(折叠继承体系)

症状:superclass和subclass之间无太大区别

解决办法:将它们合为一体。

 

11.10 Form Template Method(塑造模板函数)

症状:你有一些subclass,其中相应的某些函数以相同顺序执行类似的操作,但各措施实际上有所不同。

解决办法:将各个措施分别放进独立函数中,并保持它们都有相同的签名式(signature),于是原函数也就变得相同了。然后将原函数上移至superclass.

 

11.11 Replace Inheritance with Delegation(以委托取代继承)

症状:某个subclass只使用superclass接口中的一部分,或是根本不需要继承而来的数据。

解决办法:在subclass中新建一个值域用以保持superclass,调整subclass函数,令它改而委托superclass;然后去掉两者之间的继承关系。

 

11.12 Replace Delegation with Inheritance(以继承取代委托)

症状:你在两个class之间使用委托关系(delegation),并经常为整个接口编写许多极简单的请托函数(delegationg methods).

解决办法:让请托(delegating)class继承受托class(delegate)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值