zoukankan      html  css  js  c++  java
  • 重构_改善既有代码的设计第一章重构例子

    /**
     * 
     */
    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() + "
    ";
            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 += "	" + each.getMovie().getTitle() + "	"
                        + String.valueOf(thisAmount) + "
    ";
                totalAmount += thisAmount;
    
            }
            // add footer lines
            result += "Amount owed is " + String.valueOf(totalAmount) + "
    ";
            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;
        }
    
    }
  • 相关阅读:
    Python 如何安装、使用pip
    关于防范短信诈骗-贷款方向
    YouTube视频下载解析网站
    压力大导致你的Logstash重发消息吗?
    入职第一件事情
    监控多文件夹目录变化,python,win32
    https://pypi.org/project/watchdog/#files
    UVM_COOKBOOK学习【UVM基础】
    UVM实用技巧【二】
    UVM实用技巧【一】
  • 原文地址:https://www.cnblogs.com/usual2013blog/p/4067511.html
Copyright © 2011-2022 走看看