ZIP重构 改善既有代码的设计 源码 9.62KB

hijk1984需要积分:2(1积分=1元)

资源文件列表:

efile-refactor-chap01.zip 大约有7个文件
  1. refactor/prog/ch1-p21/Movie.java 3.09KB
  2. refactor/prog/ch1-p25/Movie.java 3.08KB
  3. refactor/prog/ch1-p33/Movie.java 4.44KB
  4. refactor/prog/ch1-p37/Movie.java 4.59KB
  5. refactor/prog/ch1-p11/Movie.java 3.29KB
  6. refactor/prog/ch1-p05/Movie.java 4.09KB
  7. refactor/prog/ch1-p52/Movie.java 6.59KB

资源介绍:

关于第一章部分的代码! 希望大家喜欢哈哈哈!
// Refactoring, a First Example, step7, (~p52) import java.util.*; 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 Price _price; // 價格 // <-- changed public Movie(String title, int priceCode){ _title = title; setPriceCode(priceCode); } public int getPriceCode(){ return _price.getPriceCode(); // <-- changed } public void setPriceCode(int arg) { // <-- changed switch (arg) { case REGULAR: // 普通片 _price = new RegularPrice(); break; case CHILDRENS: // 兒童片 _price = new ChildrensPrice(); break; case NEW_RELEASE: // 新片 _price = new NewReleasePrice(); break; default: throw new IllegalArgumentException("Incorrect Price Code"); } } public String getTitle(){ return _title; } // jjhou add public static void main(String[] args) { System.out.println("Refactoring, a First Example, step7"); Movie m1 = new Movie("Seven", Movie.NEW_RELEASE); Movie m2 = new Movie("Terminator", Movie.REGULAR); Movie m3 = new Movie("Star Trek", Movie.CHILDRENS); Rental r1 = new Rental(m1, 4); Rental r2 = new Rental(m1, 2); Rental r3 = new Rental(m3, 7); Rental r4 = new Rental(m2, 5); Rental r5 = new Rental(m3, 3); Customer c1 = new Customer("jjhou"); c1.addRental(r1); c1.addRental(r4); Customer c2 = new Customer("gigix"); c2.addRental(r1); c2.addRental(r3); c2.addRental(r2); Customer c3 = new Customer("jiangtao"); c3.addRental(r3); c3.addRental(r5); Customer c4 = new Customer("yeka"); c4.addRental(r2); c4.addRental(r3); c4.addRental(r5); System.out.println(c1.statement()); System.out.println(c2.statement()); System.out.println(c3.statement()); System.out.println(c4.statement()); } double getCharge(int daysRented) { return _price.getCharge(daysRented); } int getFrequentRenterPoints(int daysRented) { return _price.getFrequentRenterPoints(daysRented); } } class Rental { private Movie _movie; // 影片 private int _daysRented; // 租期 public Rental(Movie movie, int daysRented) { _movie = movie; _daysRented = daysRented; } public int getDaysRented() { return _daysRented; } public Movie getMovie() { return _movie; } double getCharge() { return _movie.getCharge(_daysRented); } int getFrequentRenterPoints() { return _movie.getFrequentRenterPoints(_daysRented); } } class Customer { private String _name; // 姓名 private Vector _rentals = new Vector(); // 租借記錄 public Customer(String name) { _name = name; } public void addRental(Rental arg) { _rentals.addElement(arg); } public String getName() { return _name; } public String statement() { Enumeration rentals = _rentals.elements(); String result = "Rental Record for " + getName() + "\n"; while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); //show figures for this rental result += "\t" + each.getMovie().getTitle()+ "\t" + String.valueOf(each.getCharge()) + "\n"; } //add footer lines(結尾列印) 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>" + getName() + "</EM></H1><P>\n"; while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); //show figures for each rental 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; } // 譯註:此即所謂query method private int getTotalFrequentRenterPoints(){ int result = 0; Enumeration rentals = _rentals.elements(); while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); result += each.getFrequentRenterPoints(); } return result; } // 譯註:此即所謂query method private double getTotalCharge() { double result = 0; Enumeration rentals = _rentals.elements(); while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); result += each.getCharge(); } return result; } } abstract class Price { abstract int getPriceCode(); // 取得價格代號 abstract double getCharge(int daysRented); int getFrequentRenterPoints(int daysRented) { return 1; } } class ChildrensPrice extends Price { int getPriceCode() { return Movie.CHILDRENS; } double getCharge(int daysRented) { double result = 1.5; if (daysRented > 3) result += (daysRented - 3) * 1.5; return result; } } class NewReleasePrice extends Price { int getPriceCode() { return Movie.NEW_RELEASE; } double getCharge(int daysRented) { return daysRented * 3; } int getFrequentRenterPoints(int daysRented) { return (daysRented > 1) ? 2: 1; } } class RegularPrice extends Price { int getPriceCode() { return Movie.REGULAR; } double getCharge(int daysRented) { double result = 2; if (daysRented > 2) result += (daysRented - 2) * 1.5; return result; } } 
100+评论
captcha
    类型标题大小时间
    ZIPKEIL-MDK和ST-LINK驱动70.22MB2月前
    ZIPjwysiwyg-0.6.zip简单的js文本编辑器(嵌入到html)116.2KB2月前
    ZIP计算机组成原理知识网图.zip1.18MB2月前
    ZIP鸢尾花数据集(xlsx格式)16.09KB2月前
    ZIPvolley框架1.24MB2月前
    ZIPNero刻录光盘软件-亲测有效47.55MB2月前
    ZIPJMComic2_1.4.7.zip35.48MB2月前
    ZIP2024最新版ChatGPT网站源码+支持ai绘画+GPT4.0+AI绘画+TTS实时语音识别输入+用户会员套餐+管理后台20.28MB2月前