7.7 Introduce Foreign Method(引入外加函数)

概括
          需要为提供服务的类增加一个函数,但你无法修改这个类。
          在客户类中建立一个函数,并以第一参数形式传入一个服务类实例。
      例子
Date newStart = new Date(previousEnd.getYear(),
                     previousEnd.getMonth(),previousEnd.getDate()+1);

重构后
Date newStart = nextDay(previousEnd);
private static Date nextDay(Date arg){
    return new Date(arg.getYear(), arg.getMonth(),arg.getDate()+1);
}

动机
        如果发现自己为一个服务类建立了大量外加函数,或者发现有许多类都需要同样的外加函数,此时就不应该使用本项重构。
        要记住,外加函数总归是权宜之计。如果有可能,仍然应该将这些函数搬移到它们应该所处的位置。如果由于代码所有权的原因无法这样搬移,就把外加函数交给服务类的拥有者,请他帮你在服务类中实现这个函数。
做法
.
实践
.




posted @ 2013-11-28 10:45  tanhaiyuan  阅读(281)  评论(0编辑  收藏  举报