重构改善既有代码的设计是php,PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性...

20120409221928477.png

20120409221928310.png

类图:

20120409221928516.png

动机:

1、如果一个类与另一个类有高度耦合,我就会Move Method。——class更简单,更干净利落的实现系统交付的任务。

2、移动一些值域,就要检查是否使用另一个类的次数必使用所驻对象的次数还多。

Move Field

状况:你的class中的field被另一个class更多的用到。那么在另一个class里建立new field,修改旧的field。

20120409221928700.png

20120409221928477.png

20120409221929241.png

Extract Class

状况:一个类做了两个类做的事,那么建立一个新Class,将相关的Field和Method从旧Class移到新Class。

20120409221929731.png

20120409221928477.png

20120409221929669.png

Inline Class

状况:你的某个Class没有做太多事情(没有承担足够责任),那么将Class的所有特性搬移到另一个Class中,然后移除原Class。

动机:Inline Class与Extract Class相反。——把Extract Class例子反过去,因为PhoneNumber只用作读取code和number。

Hide Delegate

状况:客户直接调用Server Object的Delegate Class的Method,那么在Server端建立客户所需的函数Method,用以隐藏委托关系。

学过对象技术的人都知道,虽然php允许你将field声明为public,但你还应该隐藏field(private)。随着经验日渐丰富,有更多值得封装的东西。

看下面一个例子:

20120409221929335.png

$person->getDepartment()->getManager()明显揭露了,要想找到Xiaocai的领导,必须要经过department,所以我们要做的事隐藏department。——可以减少耦合性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值