首页 > 代码库 > 重构_改善既有代码的设计第一章重构例子
重构_改善既有代码的设计第一章重构例子
/** * */package statedesignmodel;import java.util.Enumeration;import java.util.Vector;/** * @author Administrator * */public class Customer { private String _name; private Vector<Rental> _rentals = new Vector<Rental>(); public Customer(String name) { this._name = name; } public void addRental(Rental arg) { this._rentals.addElement(arg); } public String getName() { return _name; } public String statement() { double totalAmount = 0; int frequentRenterPoints = 0; Enumeration<Rental> rentals = this._rentals.elements(); String result = "Rental Record for " + this.getName() + "\n"; while (rentals.hasMoreElements()) { double thisAmount = 0; Rental each = (Rental) rentals.nextElement(); switch (each.getMovie().getPriceCode()) { case Movie.REGULAR: thisAmount += 2; if (each.getDaysRented() > 2) { thisAmount += (each.getDaysRented() - 2) * 1.5; break; } case Movie.NEW_RELEASE: thisAmount += each.getDaysRented() * 3; break; case Movie.CHILDRENS: thisAmount += 1.5; if (each.getDaysRented() > 3) { thisAmount += (each.getDaysRented() - 3) * 1.5; break; } } // add frequent renter points frequentRenterPoints++; // add bonus for a two day new release rental if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && each.getDaysRented() > 1) { frequentRenterPoints++; } // show figures for this rental result += "\t" + each.getMovie().getTitle() + "\t" + String.valueOf(thisAmount) + "\n"; totalAmount += thisAmount; } // add footer lines result += "Amount owed is " + String.valueOf(totalAmount) + "\n"; result += "You earned " + String.valueOf(frequentRenterPoints) + " frequent renter points"; return result; }}
/** * */package statedesignmodel;/** * @author Administrator * */public class Movie { public static final int CHILDRENS = 2; public static final int REGULAR = 0; public static final int NEW_RELEASE = 1; private String _title; private int _priceCode; public Movie(String title, int priceCode) { this._title = title; this._priceCode = priceCode; } public String getTitle() { return _title; } public void setTitle(String _title) { this._title = _title; } public int getPriceCode() { return _priceCode; } public void setPriceCode(int _priceCode) { this._priceCode = _priceCode; }}
/** * */package statedesignmodel;/** * @author Administrator * */public class Rental { private Movie _movie; private int _daysRented; public Rental(Movie movie, int daysRented) { this._movie = movie; this._daysRented = daysRented; } public Movie getMovie() { return _movie; } public int getDaysRented() { return _daysRented; }}
重构_改善既有代码的设计第一章重构例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。