多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
![](https://box.kancloud.cn/2016-02-29_56d3fe78167f3.png) 索引: Ø Move Method(搬移函数) Ø Move Field (搬移值域) Ø Extract Class (提炼类) Ø Inline Class (将类内联化,就是把当前的类合并到其他类中) Ø Hide Delegate (隐藏委托关系) Ø Remove Middle Man ( 移除中间人) Ø Introduce Foreign Method (引入外加函数) Ø Introduce Local Extension (引入本地扩展) 介绍 承接上文PHP 杂谈《重构-改善既有代码的设计》之 重新组织你的函数 ,继续说重构方面的内容。 专业术语 delegate:委托 encapsulate:封装 introduce:引入 wrapper:覆盖 前言 ”决定把责任放在哪里“——运用重构改变原先的设计。 ![](https://box.kancloud.cn/2016-02-29_56d3fe783455b.png) 解释:   1、Class承担过多而臃肿不堪——Extract Class将一部分责任分离出去。   2、Class没有承担足够多的责任,不再有单独存在的理由——Inline Class将它融入另一个Class。   3、Class使用另一个Class——Hide Delegate隐藏关系。   4、承接(3),如果Client通过Middle Man 调用很多的Delegate Class的函数(这里只是简单调用,只做跳转,而Middle Man没有做太多的业务逻辑,如10个Delegate Class中的Method对应10个Middle Man的Method)——Remove Middle Man,直接使用Delegate Class,可以部分使用Delegate Method。 Move Method 如果一个类中的方法与另一个类有很多的交流,那么我们就在另一个类中建立一个有类似功能的新函数,将旧函数变成一个单纯的Delegating Method, 或是将旧函数移除。 ![](https://box.kancloud.cn/2016-02-29_56d3fe784d827.png) ![](https://box.kancloud.cn/2016-02-29_56d3fe78696c4.png)![](https://box.kancloud.cn/2016-02-29_56d3fe788d893.png) 动机:   1、如果一个类与另一个类有高度耦合,我就会Move Method。——class更简单,更干净利落的实现系统交付的任务。   2、移动一些值域,就要检查是否使用另一个类的次数必使用所驻对象的次数还多。 Move Field 状况:你的class中的field被另一个class更多的用到。那么在另一个class里建立new field,修改旧的fi ![](https://box.kancloud.cn/2016-02-29_56d3fe78b3253.png) # http://www.phpxuexi.com/PHPjinjie/201407/3151.html