重构——16引入外加函数(Introduce Foreign Method)

简介: 引入外加函数(Introduce Foreign Method):你需要为提供服务的类增加一个函数,但你无法修改这个类;在客户端建立一个函数,并以第一参数形式传入一个服务类实例

引入外加函数(Introduce Foreign Method)

你需要为提供服务的类增加一个函数,但你无法修改这个类;在客户端建立一个函数,并以第一参数形式传入一个服务类实例

一、动机

1、服务类不能提供一项新服务,你又不能修改源码

2、如果需要大量的外加函数,就Introduce Local Extension

3、外加函数是权宜之计

二、做法

1、在客户端类建立一个函数,用来提供你需要的功能,这个函数不应该调用客户端类的任何特性。如果他需要一个值,把该值当做参数传给它

2、以服务类实例作为该函数的第一个参数

3、将该函数注释为:外加函数,应该在服务类实现

目录
相关文章
|
Java 数据库
JPA通用策略生成器(@GeneratedValue 四种标准用法为TABLE, SEQUENCE, IDENTITY, AUTO)
JPA通用策略生成器(@GeneratedValue 四种标准用法为TABLE, SEQUENCE, IDENTITY, AUTO)
199 0
重构——18自封装字段(Self Encapsulate Field)
自封装字段(Self Encapsulate Field):你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙;为这个字段建立取值/设置函数,并且只以这些函数来访问字段
1847 0
|
C#
改善代码设计 —— 简化函数调用(Making Method Calls Simple“.NET技术”r)
  系列博客       1. 改善代码上海网站建设设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
916 0
|
C#
改善代码设计 —— 简化函数调用(Making Method Calls Simpler)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
964 0
|
C#
改善代码设计 —— 简化函数调用(Making Method “.NET研究”Calls Simpler)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
870 0
重构——33以字段取代子类(Replace Subclass with Fields)
以字段取代子类(Replace Subclass with Fields):你的各个子类的唯一差别只在“返回常量数据”的函数上:修改这些函数,使他们返回超类的某个新增字段,然后销毁子类
1268 0
重构——67以委托取代继承(Replace Inheritance with Delegation)
以委托取代继承(Replace Inheritance with Delegation) 1、某个子类只使用了超类接口中的一部分,或是根本不需要继承而来的数据 2、在子类中新建一个字段用以保存超类;调整子类函数,令它改而委托超类;然后去掉两者之间的继承关系
2254 0
重构——68以继承取代委托(Replace Delegation with Inheritance)
以继承取代委托(Replace Delegation with Inheritance):你在两个类之间使用委托关系,并经常为整个接口编写许多极简单的委托关系;让委托类继承受托类
1173 0
重构——50引入参数对象(Introduce Parameter Object)
引入参数对象(Introduce Parameter Object):Range模式;某些参数总是很自然的同时出现;以一个对象取代这些参数
1768 0