php上的重构:改进现有代码的设计两个对象的移动特性

思维导图




指标 uff1a
Oslash;移动方法(运动功能)
Oslash;运动场(运动范围)
Oslash;提取类(炼油类)
Oslash;内联类(内联类,即合并当前类其他类)
Oslash;隐藏委托(隐藏委托关系)
Oslash;去除中间人(去掉中间人)
Oslash;引进国外的方法(外部功能介绍)
Oslash;引入本地扩展(引入本地扩展)

介绍

承接以上PHP文章重构:改进现有代码的设计,组织您的功能,继续进行重构方面的工作。




技术术语

委托代表:
封装:封装
介绍:介绍
包装:盖

前言

决定把责任放在哪里——使用重构来改变最初的设计。





解释:

1类是超载和臃肿的责任分离提取类。

2,类不承担太多的责任,也不再有单一的理由存在——内联类将其集成到另一个类中。

3,类使用另一个类隐藏委托来隐藏关系。

4,要进行,如果(3)客户端由中间人代表类很多调用函数(这里只是一个简单的调用,只做跳转,而中间人没有做太多的业务逻辑,如10个委托类方法中对应10种方法的中间人)——删除中间人,直接使用委托类,可以使用委托方法。


移动方法

如果一个类中的方法与另一个类有许多交互,我们将在另一个类中创建一个具有类似功能的新函数,将旧函数转换成简单的委托方法,或者删除旧函数。











类图:





动机:

1。如果一个类与另一个类高度耦合,我将把方法移动。

2,移动某一范围的范围,检查是否使用另一类的次数,必须在对象的数量中使用。
搬场

状态:您的类中的字段更多地被另一个类使用,然后在另一个类中设置新字段,并修改旧字段。











提取类

状态:一个类执行两个类,然后构建一个新类,将相关字段和方法从旧类移到新类。









将类内联化

状态:您的一个类没有做太多的事情(没有承担足够的责任),然后将类的所有特性移到另一个类,然后删除原来的类。
动机:内联类是提取类相反。以提取类实例对过去因为电话号码只用于阅读代码和号码。


隐藏委托关系

状态:客户直接调用服务器对象委托类的方法,然后在服务器端建立方法函数方法来隐藏信任关系。

每个学习了对象技术的人都知道,虽然PHP允许你公开字段,但是你也应该隐藏字段(私有)。随着越来越多的经验,有很多东西值得封装。

请看下面的例子:




$人-> getdepartment()-> getmanager()清楚地表明,如果我们想找到Xiaocai的领导,我们也要通过部门,所以我们需要隐藏的部门。它可以减少耦合。






去除中间人

情境:如果一个类做了太多简单的委托,那么我们直接调用委托类。
动机:在隐藏委托的例子中,当部门有更多的新方法时,我们必须为委托人添加相应的方法,此时,人是一个中间人,然后我们应该调用委托类部门。
重构的意义是,只要你解决问题,你就不必说对不起。







引进国外的方法

现状:有一类的额外功能,客户端需要使用previousend上课,但是你不能修改这个类previousend。然后你建立一个功能在客户端和采取previousend实体作为参数。






介绍当地的延伸

状态:您的类需要一些额外的函数,但是您不能修改当前类,然后构建一个新类来包含这些函数。使用子类或包装器。这通常是在您不能修改源代码时使用的。

以上面介绍的国外方法为例






总结

需要注意的是,提取类和内联类、隐藏委托和删除中间人都是相反的过程。为了具体理解,我们可以在前言中看到流程图。

隐藏委托我们过去使用少量的委托、方法和删除中间人,委托方法用于调用大量时间,我们可以直接使用委托类,称为委托方法,以及其他我们所保留的部分。

提取类和内联类、提取类常常用来承担太多的责任,成为臃肿的类,而当当前类过于不负责任时,经常使用内联类。