我想知道你對使用流暢接口模式重構長方法的看法。用流暢的接口重構長方法
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