重构——67以委托取代继承(Replace Inheritance with Delegation)

简介: 以委托取代继承(Replace Inheritance with Delegation) 1、某个子类只使用了超类接口中的一部分,或是根本不需要继承而来的数据 2、在子类中新建一个字段用以保存超类;调整子类函数,令它改而委托超类;然后去掉两者之间的继承关系

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

1、某个子类只使用了超类接口中的一部分,或是根本不需要继承而来的数据

2、在子类中新建一个字段用以保存超类;调整子类函数,令它改而委托超类;然后去掉两者之间的继承关系

一、动机

超类中的许多操作并不真正适用于子类

二、操作

1、在子类中新建一个字段,使其引用超类的一个实例,并将它初始化为this

2、修改子类内的所有函数,让它们不再使用超类,转而使用上述那个受托字段。每次修改后,编译并测试

3、去除两个类之间的继承关系,新建一个受托类对象赋给受托字段

4、针对客户端所用的每一个超类函数,为它添加一个简单的委托函数

5、编译,测试

目录
相关文章
|
2天前
|
编译器
|
3天前
|
JavaScript 前端开发
js继承的超详细讲解:原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承、class继承
js继承的超详细讲解:原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承、class继承
60 0
|
9月前
|
算法 Python
如何实现Python中的多重继承(Multiple Inheritance)以及方法解析顺序(MRO)
如何实现Python中的多重继承(Multiple Inheritance)以及方法解析顺序(MRO)
215 0
|
JavaScript 前端开发
js对象的创建对象模式和继承模式(下)---继承模式
js对象的创建对象模式和继承模式(下)---继承模式
77 0
|
JavaScript
JS面向对象继承创建和使用
JS面向对象继承创建和使用
85 0
【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 使用 @Delegate 注解进行方法委托 )
【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 使用 @Delegate 注解进行方法委托 )
129 0
【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 使用 @Delegate 注解进行方法委托 )
|
JavaScript 前端开发
一篇文章理解JS继承——原型链/构造函数/组合/原型式/寄生式/寄生组合/Class extends
说实在话,以前我只需要知道“寄生组合继承”是最好的,有个祖传代码模版用就行。最近因为一些事情,几个星期以来一直心心念念想整理出来。本文以《JavaScript高级程序设计》上的内容为骨架,补充了ES6 Class的相关内容,从我认为更容易理解的角度将继承这件事叙述出来,希望大家能有所收获。
1468 0
重构——68以继承取代委托(Replace Delegation with Inheritance)
以继承取代委托(Replace Delegation with Inheritance):你在两个类之间使用委托关系,并经常为整个接口编写许多极简单的委托关系;让委托类继承受托类
1133 0
重构——63提炼超类(Extract Superclass)
提炼超类(Extract Superclass):两个类有相似特性;为这两个类建立一个超类,将相同的特性搬移到超类
1675 0
|
Java
重构——54封装向下转型(Encapsulate Downcast)
封装向下转型(Encapsulate Downcast):某个函数返回的对象,需要由函数调用者执行向下转型(downcast);将向下转型动作移到函数中
1525 0