重构——17引入本地扩展(Introduce Local Extension)

简介: 引入本地扩展(Introduce Local Extension):你需要为服务类提供一些额外函数,但你无法修改这个类;建立一个新类,使它包含这些额外函数,让这个类扩展成为源类的子类或者包装类

引入本地扩展(Introduce Local Extension)

你需要为服务类提供一些额外函数,但你无法修改这个类;建立一个新类,使它包含这些额外函数,让这个类扩展成为源类的子类或者包装类

一、动机

1、需要的额外函数超过俩,Introduce Foreign Method Hold不住了

2、包装类和子类怎么选择?

二、做法

1、建立一个扩展类,将它作为原始类的子类或者包装类

2、在扩展类中加入转型构造函数

3、在扩展类中加入新特性

4、根据需要,将源对象替换为扩展对象

5、将针对原始类定义的所有外加函数搬移到扩展类中

6、重新组织数据

目录
相关文章
|
6月前
|
Swift Perl
OC和swift混合工程更新库时报:target has transitive dependencies that include statically linked binaries
OC和swift混合工程更新库时报:target has transitive dependencies that include statically linked binaries
87 0
|
API 图形学
【Unity细节】RigidBody中Dynamic和Kinematic的区别
【Unity细节】RigidBody中Dynamic和Kinematic的区别
140 0
|
存储
[✔️] lua profile细节逻辑
[✔️] lua profile细节逻辑
102 0
|
前端开发 开发者
通过 local 和 global 设置类名是否被模块化|学习笔记
快速学习通过 local 和 global 设置类名是否被模块化
122 0
|
前端开发
通过local和global设置类名是否被模块化
通过local和global设置类名是否被模块化
Hybris做增强的两种方式:In App Extension和Side by Side Extension
Hybris做增强的两种方式:In App Extension和Side by Side Extension
129 0
Hybris做增强的两种方式:In App Extension和Side by Side Extension
|
XML 数据格式
SAP CRM Application Extension Tool(AET)扩展字段的渲染原理
SAP CRM Application Extension Tool(AET)扩展字段的渲染原理
136 0
SAP CRM Application Extension Tool(AET)扩展字段的渲染原理
SAP CRM Application Extension Tool类型为Code List的扩展字段实现原理
When you create extension field via Application Extension Tool, it seems the code list ( or drop down list ) is not supported by this tool. This type does not appear in supported data type list.
SAP CRM Application Extension Tool类型为Code List的扩展字段实现原理
|
Web App开发 JavaScript C++