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