很明顯看出來,htmlStatement()和statement()是不同的。現在,我應該脫下[重構]的帽子,戴上[添加功能]的帽子,戴上[添加功能]的帽子。我可以像下面這樣編寫htmlStatement(),并添加相應測試:
public String htmlStatement() {
Enumeration rentals = _rentals.elements();
String result = "<H1>Rental Record for <EM> " + getName() + "</EM></H1><P>\n";
while(rentals.hasMoreElements()) {
Rental each = (Rental)rentals.nextElement(); //取得一筆租借記錄
result += each.getMovie().getTitle() + ":" +
String.valueOf(each.getCharge()) + "<BR>\n";
}
// add footer lines(結尾打印)
result += "<P>You owe <EM>" + String.valueOf(getTotalCharge()) + "</EM><P> \n";
result += "On this rental you earned <EM>" + String.valueOf(getTotalfrequentRenterPoints()) +
"</EM>frequent renter points<P>";
return result;
}
通過計算邏輯的提煉,我可以完成一個htmlStatement(),并復用(reuse)原本statement()內的所有計算。我不必剪剪貼貼,所以如果計算規(guī)則發(fā)生改變,我只需在程序中做一處修改。