曾用名:以数据类取代记录(Replace Record withData Class)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2MI6FWVa-1656739774326)(B068CFA05617436488C68CE13A5E9B4B)]](https://1000bd.com/contentImg/2022/07/02/150250775.png)
时机:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g9Gk0GX5-1656739774327)(9D76A9B98608452293C1305D3782664E)]](https://1000bd.com/contentImg/2022/07/02/150251016.png)
曾用名:以对象取代数据值(Replace Data Value with Object)
曾用名:以类取代类型码(Replace Type Code with Class)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qBkFjxAN-1656739774327)(4641054E49C844889CE49DD8426C3498)]](https://1000bd.com/contentImg/2022/07/02/150251257.png)
时机
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-caLRe9I1-1656739774328)(B2722C1403D443D395AD5118930BB201)]](https://1000bd.com/contentImg/2022/07/02/150251461.png)
反向重构:内联类
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pwNHX7Jr-1656739774328)(E685AF215468432C92C8DDC68AF96092)]](https://1000bd.com/contentImg/2022/07/02/150251631.png)
时机
反向重构:提炼类
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fErRm94u-1656739774329)(FB349E18C76A4CCCA72A444FBF3B9CFC)]](https://1000bd.com/contentImg/2022/07/02/150251868.png)
时机
反向重构:移除中间人
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wy7h6FpD-1656739774329)(98242FB9ABE44FF398E3E8BA7CE3C57A)]](https://1000bd.com/contentImg/2022/07/02/150252064.png)
时机
反向重构:隐藏委托关系
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zeu8YLiJ-1656739774330)(2DF5D6BD02E741F88A4F3B217F0FAA26)]](https://1000bd.com/contentImg/2022/07/02/150252252.png)
时机
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwSJTGV8-1656739774330)(BCEB05A778E240CDA8A83959B6E0472A)]](https://1000bd.com/contentImg/2022/07/02/150252472.png)
曾用名:搬移函数(Move Method)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jTYfV5Z5-1656739774331)(AB9815B091C840B092F9CD3B3DEE2DA3)]](https://1000bd.com/contentImg/2022/07/02/150252697.png)
时机
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9LQpFhvn-1656739774331)(EFC667D19F7C4A4BAD25F049BDB3201C)]](https://1000bd.com/contentImg/2022/07/02/150252906.png)
反向重构:搬移语句到调用者
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3JDfgpPB-1656739774331)(663D2A7B77F143B0B79ED9994496EECA)]](https://1000bd.com/contentImg/2022/07/02/150253094.png)
时机
反向重构:搬移语句到函数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UdsMRoCw-1656739774332)(52E4295FBD7B4A65B2CE937B353AA071)]](https://1000bd.com/contentImg/2022/07/02/150253346.png)
时机
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fY2ozPg7-1656739774332)(A55AB157D1D9412BAAC392FF5452E941)]](https://1000bd.com/contentImg/2022/07/02/150253589.png)
曾用名:合并重复的代码片段(Consolidate Duplicate Conditional Fragments)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rrgFaAaO-1656739774332)(9C0D40AEF8884BE9AFFC9B3B46FA6A9F)]](https://1000bd.com/contentImg/2022/07/02/150253831.png)
时机
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nbZEmsW1-1656739774333)(C988ABC5F7A147F4BB3D16DB6F254216)]](https://1000bd.com/contentImg/2022/07/02/150254086.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4OgT8C3s-1656739774333)(57D247C2D2AF4EA7ACAE2D1BFF450E23)]](https://1000bd.com/contentImg/2022/07/02/150254350.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZSYiLKgY-1656739774333)(CF197C24E1E6440794C824E6FE2D2516)]](https://1000bd.com/contentImg/2022/07/02/150254558.png)
曾用名:移除对参数的赋值(Remove Assignments to Parameters)
曾用名:分解临时变量(Split Temp)
![![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ot8HuamT-1656739774334)(ACD8B59FA0264302AC511AFF4CB15C31)]](https://img-blog.csdnimg.cn/f3f76ce7d87d495691bf7b91baa50360.png](https://1000bd.com/contentImg/2022/07/02/150254792.png)
时机
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DvaOvoam-1656739774334)(AC28DF0E05B3409EB53144FB4FC46B20)]](https://1000bd.com/contentImg/2022/07/02/150255008.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yogzlvG1-1656739774334)(E031C68DB6B74270B839E5D2E7E63ACD)]](https://1000bd.com/contentImg/2022/07/02/150255264.png)
反向重构:将值对象改为引用对象
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-095dzRVO-1656739774335)(41EE8E17AAD6491988258FC1778EB70A)]](https://1000bd.com/contentImg/2022/07/02/150255484.png)
时机
值对象:a.b=new b(1)
引用对象:a.b.c=1
反向重构:将引用对象改为值对象
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YMrX2mMq-1656739774335)(A7F0091F9E84477BAE491038D304668F)]](https://1000bd.com/contentImg/2022/07/02/150255710.png)
时机




曾用名:引入Null对象(Introduce Null Object)

时机
从一个作为容器的数据结构(或者类)开始,其中包含一个属性,该属性就是我们要重构的目标。容器的客户端每次使用这个属性时,都需要将其与某个特例值做比对。我们希望把这个特例值替换为代表这种特例情况的类或数据结构。

因为断言应该不会对系统运行造成任何影响,所以“加
入断言”永远都应该是行为保持的。

曾用名:令函数携带参数(Parameterize Method)

时机
曾用名:以明确函数取代参数(Replace Parameter with Explicit Methods)

时机

曾用名:以函数取代参数
反向重构:以参数取代查询

时机
反向重构:以查询取代参数

时机

曾用名:以工厂函数取代构造函数(Replace Constructor with Factory Method)

动机

曾用名:以函数对象取代函数(Replace Method With Method Object)
反向重构:以函数取代命令
时机
反向重构:以命令取代函数

时机
反向重构:函数下移

时机
反向重构:字段下移

时机

反向重构:函数上移

时机
反向重构:字段上移

动机
包含旧重构:以State/Strategy取代类型码(Replace Type Code with State/Strategy)
包含旧重构:提炼子类(Extract Subclass)
反向重构:移除子类

时机
-做法
曾用名:以字段取代子类(Replace Subclass with Fields)
反向重构:以子类取代类型码

时机



曾用名:以委托取代继承(Replace Inheritance with Delegation)

时机