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

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

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

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

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

一、动机

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

二、操作

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

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

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

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

5、编译,测试

目录
相关文章
|
3月前
|
SQL 存储
访问者模式问题之LiteralExpression 类中的 literal 属性是用来做啥的
访问者模式问题之LiteralExpression 类中的 literal 属性是用来做啥的
|
3月前
|
存储 SQL
访问者模式问题之FunctionExtractor2 类中的 functions 列表该怎么被使用
访问者模式问题之FunctionExtractor2 类中的 functions 列表该怎么被使用
|
JavaScript 前端开发
js对象的创建对象模式和继承模式(下)---继承模式
js对象的创建对象模式和继承模式(下)---继承模式
98 0
|
Python
UVM class 类的继承派生关系
UVM class 类的继承派生关系
315 0
UVM class 类的继承派生关系
|
算法 Java 调度
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?(下)
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?(下)
138 0
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?(下)
|
算法 前端开发 Java
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?(上)
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?
243 0
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?(上)
|
JavaScript
JS面向对象继承创建和使用
JS面向对象继承创建和使用
108 0
【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 使用 @Delegate 注解进行方法委托 )
【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 使用 @Delegate 注解进行方法委托 )
156 0
【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 使用 @Delegate 注解进行方法委托 )
|
Java
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 重写 MetaClass#invokeMethod 方法拦截 JDK 中已经定义的函数 )
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 重写 MetaClass#invokeMethod 方法拦截 JDK 中已经定义的函数 )
134 0
重构——68以继承取代委托(Replace Delegation with Inheritance)
以继承取代委托(Replace Delegation with Inheritance):你在两个类之间使用委托关系,并经常为整个接口编写许多极简单的委托关系;让委托类继承受托类
1174 0