使用Java设计一个图书打折系统 - 编程入门网
);
}
public void printPayList(){
_order.printPayList();
}
public void addPolicy(){
_order.addPolicy();
}
}
根据打折消息[4]:“购买5本以上的图书,固定折扣为20元”,得到具体装饰角色CopyDecorator。它将重写addPolicy()方法。 CopyDecorator.java
根据打折消息[5]:“在所有的折扣计算后,总的折扣价不得超过50元”,得到具体装饰角色PayDecorator。它将重写addPolicy()方法。 必须注意两个装饰类产生的先后顺序。 PayDecorator.java
使用Java设计一个图书打折系统(7)时间:2011-03-23 zhangjunhd4.客户端实现 Client中先演示了没有装饰类,即只实现打折消息[1],[2],[3]的情况,此时原价300元的货款折扣为36元;而后加上了两个装饰类后,由于购买六本书,另加29元折扣后总折扣变为56,超过50元的折扣上限,所以最终折扣为50元。 Client.java package com.zj.client; import com.zj.books.BookType; import com.zj.order.Order; import com.zj.order.PayOrder; import com.zj.order.decorator.CopyDecorator; import com.zj.order.decorator.PayDecorator; public class Client { public static void main(String[] args) { Order order = new PayOrder(10, 0.1); order.buy(1, "Java", 40, BookType.COMPUTER); order.buy(1, "C++", 60, BookType.COMPUTER); order.buy(1, "Design Pattern", 100, BookType.COMPUTER); order.buy(1, "Manager", 60, BookType.MANAGEMENT); order.buy(1, "Apo", 20, BookType.NEW_RELEASE); order.buy(1, "droAq", 20, BookType.NEW_RELEASE); order.printPayList(); System.out.println("==========="); System.out.println("original\t"+order.originalPay()); System.out.println("discount\t"+order.discount()); System.out.println("actual\t\t"+order.actualPay()); System.out.println("==========="); order=new CopyDecorator(new PayDecorator(order)); order.addPolicy(); System.out.println("original\t"+order.originalPay()); System.out.println("discount\t"+order.discount()); System.out.println("actual\t\t"+order.actualPay()); } } 结果
本文出自 “子 孑” 博客,请务必保留此出处http: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |