我想知道你对使用流畅接口模式重构长方法的看法。用流畅的接口重构长方法
http://en.wikipedia.org/wiki/Fluent_interface
流畅的图案不包含在重构的书籍。
例如,假设你有这种长法(用长的名字,因为它 做许多事)
class TravelClub {
Receipt buyAndAddPointsAndGetReceipt(long amount, long cardNumber) {
buy(amount);
accumulatePoints(cardNumber);
return generateReceipt();
}
void buy(int amount) {...}
void accumlatePoints(int cardNumber) {...}
void generateRecepit() {...}
}
称为:
Receipt myReceipt = myTravelClub.buyAndAddPointsAndGetReceipt(543L,12345678L);
可能被重构为:
class TravelClub {
TravelClub buy(long amount) {
//buy stuff
return this;
}
TravelClub accumulatePoints(long cardNumber) {
//accumulate stuff
return this;
}
Receipt generateReceipt() {
return new Receipt(...);
}
}
并呼吁:
Receipt myReceipt = myTravelClub.buy(543L).accumulatePoints(12345678L).generateReceipt();
从我的角度来看,这是一个很好的方式来分解长方法和 也分解它的名字。
你觉得呢?
只是好奇...是不是门面模式的这种相反,你试图通过提供简单的使用方法或接口来隐藏有多个方法或接口的复杂性。 –
@Sandeep,谢谢你的提示。没错,但是国际海事组织认为这种模式是非常大的(加上它的名字,加上参数的数量) – ejaenv