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

简介: 以继承取代委托(Replace Delegation with Inheritance):你在两个类之间使用委托关系,并经常为整个接口编写许多极简单的委托关系;让委托类继承受托类

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

你在两个类之间使用委托关系,并经常为整个接口编写许多极简单的委托关系;让委托类继承受托类

一、动机

需要受托类中的所有函数

二、做法

1、让委托端成为受托端的一个子类

2、编译

3、将受托字段设为该字段所处对象本身

4、去掉简单的委托函数

5、编译并测试

6、将所有其它涉及委托关系的代码,改为调用对象自身

7、移除受托字段

目录
相关文章
|
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
重构——67以委托取代继承(Replace Inheritance with Delegation)
以委托取代继承(Replace Inheritance with Delegation) 1、某个子类只使用了超类接口中的一部分,或是根本不需要继承而来的数据 2、在子类中新建一个字段用以保存超类;调整子类函数,令它改而委托超类;然后去掉两者之间的继承关系
2113 0
重构——63提炼超类(Extract Superclass)
提炼超类(Extract Superclass):两个类有相似特性;为这两个类建立一个超类,将相同的特性搬移到超类
1675 0
|
Java
重构——54封装向下转型(Encapsulate Downcast)
封装向下转型(Encapsulate Downcast):某个函数返回的对象,需要由函数调用者执行向下转型(downcast);将向下转型动作移到函数中
1525 0