《重构》 — Java示例:影片出租店程序(4、添加功能)
2011-04-22 09:31
471 查看
示例:影片出租店程序(添加功能)
说明:通过对计算逻辑的提炼,可以完成一个HtmlStatement(),并复用原本Statement()内的所有计算。
代码:
package Movie_Ref;
import java.util.Enumeration;
import java.util.Vector;
public class Customer {
private String _name;//姓名
private Vector _rentals = new Vector(); //租借记录
public Customer(String name) {
_name = name;
}
public void addRental(Rental obj) {
_rentals.addElement(obj);
}
public String get_name() {
return _name;
}
private int getTotalFrequentRenterPoints() {
int result = 0; //--常客积点
Enumeration rentals = _rentals.elements();
while(rentals.hasMoreElements()){
Rental each = (Rental) rentals.nextElement(); //--取得一笔租借记录
//---累加常客积点
result += each.getFrequentRenterPoints();
}
return result;
}
private double getTotalCharge() {
double result = 0; //--总消费金额
Enumeration rentals = _rentals.elements();
while(rentals.hasMoreElements()){
Rental each = (Rental) rentals.nextElement(); //--取得一笔租借记录
result += each.getCharge();
}
return result;
}
public String statement() {
Enumeration rentals = _rentals.elements();
String result = "Rental Record for " + get_name() + "/n";
while(rentals.hasMoreElements()){
Rental each = (Rental) rentals.nextElement(); //--取得一笔租借记录
//---显示此笔租借数据
result += "/t" + each.get_movie().get_title() + "/t" +
String.valueOf(each.getCharge()) + "/n";
}
//---结尾打印
result += "Amount owed is " + String.valueOf(getTotalCharge()) + "/n";
result += "You earned " + String.valueOf(getTotalFrequentRenterPoints()) +
" frequent renter points";
return result;
}
public String htmlStatement() {
Enumeration rentals = _rentals.elements();
String result = "<H1>Rentals for <EM>" + get_name() + "</EM></H1><P>/n";
while(rentals.hasMoreElements()){
Rental each = (Rental) rentals.nextElement(); //--取得一笔租借记录
//---显示此笔租借数据
result += each.get_movie().get_title() + ": " +
String.valueOf(each.getCharge()) + "<BR>/n";
}
//---结尾打印
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;
}
}
相关文章推荐
- 《重构》 — Delphi示例:影片出租店程序(4、添加功能)
- 《重构》 — Java示例:影片出租店程序(2、单元测试)
- 《重构》 — Java示例:影片出租店程序(3、重构——分解并重组Statement)
- 《重构》 — Java示例:影片出租店程序(6、重构——引入状态模式)
- 《重构》 — Java示例:影片出租店程序(5、单元测试)
- 《重构》 — Java示例:影片出租店程序(1、重构前)
- 《重构》 — Delphi示例:影片出租店程序(2、单元测试)
- 《重构》 — Delphi示例:影片出租店程序(3、重构——分解并重组Statement)
- 《重构》 — Delphi示例:影片出租店程序(5、单元测试)
- 《重构》 — Delphi示例:影片出租店程序(6、重构——引入状态模式)
- 《重构》 — Delphi示例:影片出租店程序(1、重构前)
- 读Java并发编程实践中,向已有线程安全类添加功能--客户端加锁实现示例
- Java程序中添加播放MIDI音乐功能的实现方法详解
- 为Java程序中添加播放MIDI音乐功能
- 为Java程序中添加播放MIDI音乐功能
- 重构Java代码的既有设计-影片出租店
- 如何在Flex builder上添加开发Java程序功能
- 为Java程序中添加播放MIDI音乐功能
- java 图形用户界面设计 之 在界面中添加菜单栏 示例程序及相关方法介绍
- 微信小程序实现添加手机联系人功能示例