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

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

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

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

一、动机

需要受托类中的所有函数

二、做法

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

2、编译

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

4、去掉简单的委托函数

5、编译并测试

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

7、移除受托字段

目录
相关文章
|
3月前
|
SQL 存储
访问者模式问题之LiteralExpression 类中的 literal 属性是用来做啥的
访问者模式问题之LiteralExpression 类中的 literal 属性是用来做啥的
|
3月前
|
存储 SQL
访问者模式问题之FunctionExtractor2 类中的 functions 列表该怎么被使用
访问者模式问题之FunctionExtractor2 类中的 functions 列表该怎么被使用
|
JavaScript 安全 前端开发
🎖️typeScrpt中如何从类派生接口?
在面向对象编程(OOP)中,通常我们会定义接口,并在不同的类中实现这些接口。但在 TypeScript 中,我们也可以进行反向操作,即从一个类中派生一个接口,而无需实际定义这个接口
107 0
|
算法 前端开发 Java
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?(上)
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?
243 0
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?(上)
|
算法 Java 调度
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?(下)
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?(下)
137 0
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?(下)
C#(二十二)之抽象方法 密封方法 base new 关键字
本篇内容记录了普通方法的隐藏(new)、base关键字、抽象类和抽象方法(abstract)、密封类和蜜蜂方法(sealed)的简单用法。
129 0
C#(二十二)之抽象方法 密封方法 base new 关键字
重构——67以委托取代继承(Replace Inheritance with Delegation)
以委托取代继承(Replace Inheritance with Delegation) 1、某个子类只使用了超类接口中的一部分,或是根本不需要继承而来的数据 2、在子类中新建一个字段用以保存超类;调整子类函数,令它改而委托超类;然后去掉两者之间的继承关系
2256 0
重构——63提炼超类(Extract Superclass)
提炼超类(Extract Superclass):两个类有相似特性;为这两个类建立一个超类,将相同的特性搬移到超类
1766 0