手机版

PHP杂项讨论《重构-改善既有代码的设计》 (2)对象之间的传递特性

时间:2021-10-10 来源:互联网 编辑:宝哥软件园 浏览:

思维导图

索引:移动方法,移动字段,提取类,内类(内类,即把当前类合并到其他类中。)隐藏委托,去掉中间人,引入外来方法,引入局部扩展,从上面的PHP杂谈《重构-改善既有代码的设计》介绍你的函数的重组,继续讲重构。条款委托:委托封装:封装介绍:介绍包装:封面前言“决定把责任放在哪里”——使用重构来改变原来的设计。

说明:1。这个班人浮于事。——提取类分离了一些职责。2.班级没有承担足够的责任,所以没有理由单独存在。——内联类将其集成到另一个类中。3.类使用另一个类——隐藏委托来隐藏关系。4.继续(3),如果客户端通过中间人调用了很多委托类函数(这里只是简单的调用,只是跳转,中间人没有做太多的业务逻辑,比如10个委托类中的Method对应10个中间人的方法。)——删除中间人,直接使用委托类,部分使用委托方法。移动方法如果一个类中的方法和另一个类中的方法之间有很多通信,那么我们将在另一个类中创建一个具有相似功能的新函数,将旧函数更改为简单的委托方法,或者删除旧函数。

:类图纸

动机:1。如果一个类和另一个类高度耦合,我会移动移动方法。——类实现系统交付任务更简单、更干净。2.要移动某些值范围,需要检查是否使用另一个类,并且使用常驻对象的次数必须更多。移动字段状态:您的类中的字段被另一个类使用得更多。然后在另一个类中创建新字段并修改旧字段。

提取类状态:如果一个类执行两个类的操作,那么创建一个新的类,并将相关的字段和方法从旧类移动到新类。

内联类状态:如果您的一个类没有做太多的事情(它没有承担足够的责任),那么将该类的所有功能移动到另一个类,然后删除原始类。动机:内联类与抽取类相反。3354颠倒了提取类的例子,因为电话号码只用于读取代码和号码。隐藏委托状态:如果客户直接调用服务器对象委托类的方法,那么在服务器端建立客户需要的函数Method来隐藏委托关系。任何研究过对象技术的人都知道,虽然php允许您将字段声明为公共的,但是您也应该隐藏字段(私有的)。随着体验的增加,有更多值得包装的东西。请看下面的例子:

$ person-getdepartment()-getmanager()显然透露,如果我们想找到蔡晓的首领,就必须经过这个部门,所以我们要做的就是隐藏这个部门。3354可以减少耦合。

删除中间人状态:如果一个类做了太多的简单委托,那么我们将直接调用委托类。动机:在隐藏委托的例子中,当部门有更多的新方法时,我们必须在Person for Delegate中添加相应的方法。此时的Person已经完全变成了一个中间人,所以我们应该直接叫Delegate Class——Department。重建的意义在于,你永远不必说对不起,只需修复问题。

引入外来方法状态:有一个类Client需要在以前的类中使用一个额外的函数,但是您不能修改以前的这个类,所以您可以在Client中创建一个函数,并将以前的实体作为参数。

引入本地扩展状态:你的类需要一些额外的函数,但是你不能修改当前的类,所以创建一个新的类来包含这些函数。使用子类或包装。3354这通常在您无法修改源代码时使用。以上面的“引进国外方法”为例。

使用子类方法

或者使用包装器

综上所述,需要注意的是“提取类”和“内联类”、“隐藏委托”和“移除中间人”是相反的过程。具体理解请看前言中的流程图。“Hide Delegate”经常在使用少量“委托方法”时使用,而“Remove Middle Man”则是在调用很多“委托方法”时使用,我们可以直接使用Delegate Class来调用它们,同时我们会适当保留其中的一些方法。“提取类”和“内联类”,“提取类”常用于因职责过多而变得臃肿的类,而“内联类”常用于当前类“过于不负责任”的情况。就我个人而言,我更愿意“提取类”而不是“内联类”。

版权声明:PHP杂项讨论《重构-改善既有代码的设计》 (2)对象之间的传递特性是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。