xmlsalesformatter.java

来自「这是我修读美国卡耐基梅隆大学Carnegie Mellon University」· Java 代码 · 共 73 行

JAVA
73
字号
import java.util.*;

/**
 * The class XMLSalesFormatter implements the interface SalesFormatter. 
 * This class is implemented as a singleton so a new object will not be 
 * created every time the XML format is used.
 *
 * @author 张维
 * @version  1.0.0
 * @see SalesFormatter
 * @see Order
 * @see Product
 * @see OrderItem
 * @see Sales
 * @see Catalog
 * @see Coffee
 * @see CoffeeBrewer
 */
public class XMLSalesFormatter implements SalesFormatter {

    /* Line separator */
    private static final String NEW_LINE = System.getProperty("line.separator");

    /* Single instance of this class */
    private static XMLSalesFormatter singletonInstance = null;

    /**
     * Returns the single instance of class <code>XMLSalesFormatter</code>
     *
     * @return the single instance  of class <code>XMLSalesFormatter</code>
     */
    public static XMLSalesFormatter getSingletonInstance( ) {

        if (singletonInstance == null) {
            singletonInstance = new XMLSalesFormatter( );
        }
        return singletonInstance;
    }

    /**
     * The constructor is declared private so other classes cannot
     * create an instance of this class.
     */
    private XMLSalesFormatter( ) {
    	
    }

    /**
     * Returns an XML representation of the specified sales.
     *
     * @param sales  the Sales object that contains the orders that have been sold. 
     * @return  a XML representation of the specified <code>Sales</code> object.
     */
     public String formatSales(Sales sales) {
     	
        String s = "<Sales>" + NEW_LINE;
        for(Iterator iterator = sales.getOrdersIterator( ); iterator.hasNext( );) { 
        	
            Order order = (Order)iterator.next( );
            s = s + "  <Order total=\"" + order.getTotalCost() + "\">" + NEW_LINE;
            
            for(Iterator iterator1 = order.getItemsIterator( ); iterator1.hasNext( );) {
                OrderItem orderitem = (OrderItem)iterator1.next( );
                s = s + "    <OrderItem quantity=\"" + orderitem.getQuantity( ) 
                    + "\" price=\"" + orderitem.getProduct( ).getPrice( ) + "\">" 
                    + orderitem.getProduct( ).getCode( ) + "</OrderItem>" + NEW_LINE;
            }
            s = s + "  </Order>" + NEW_LINE;
        }
        s = s + "</Sales>";
        return s;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?