快速业务通道

使用Java设计一个图书打折系统 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

使用Java设计一个图书打折系统

时间:2011-03-23 zhangjunhd

书店推出打折消息:

[1]对于“新书”,没有折扣;

[2]对于“计算机”类图书,固定折扣为10元;

[3]对于“经管”类图书,折扣的书价的10%;

[4]购买5本以上的图书,固定折扣为20元;

[5]在所有的折扣计算后,总的折扣价不得超过50元。

1.使用Strategy模式

对于打折消息[1],[2],[3]针对三种类型的图书,可以使用Strategy模式。

使用Java设计一个图书打折系统 - 编程入门网

NoDiscountStrategy代表购买“新书”的打折策略-没有折扣;

FlatRateStrategy代表购买“计算机”类图书的打折策略-固定折扣价;

PercentageStrategy代表购买“经管”类图书的打折策略-百分比折扣价。

<<abstract>>DiscountStrategy.java

package com.zj.books.strategy; public abstract class DiscountStrategy {    protected double _price = 0.0;    public DiscountStrategy(double price) {     _price = price;    }    abstract public double calculateDiscount(); …… }

_price代表图书的价格;抽象方法calculateDiscount()表示具体的打折计算逻辑,延迟到子类中实现。下面的三个子类的部分逻辑。

NoDiscountStrategy.java

package com.zj.books.strategy; public class NoDiscountStrategy extends DiscountStrategy {    public NoDiscountStrategy(double price) {     super(price);    }    public double calculateDiscount() {     return 0.0;    } }

使用Java设计一个图书打折系统(2)

时间:2011-03-23 zhangjunhd

FlatRateStrategy.java

package com.zj.books.strategy; public class FlatRateStrategy extends DiscountStrategy {    private double _discount = 0.0;    public FlatRateStrategy(double price, double discount) {     super(price);     _discount = discount;    }    public double calculateDiscount() {     return _discount;    } …… }

PercentageStrategy.java

package com.zj.books.strategy; public class PercentageStrategy extends DiscountStrategy {    private double _percent = 1.0;    public PercentageStrategy(double price, double percent) {     super(price);     if (percent > 1.0)       percent = 1.0;     _percent = percent;    }    public double calculateDiscount() {     return _price * _percent;    } …… }

使用一个抽象基类Book持有一个策略引用,这个策略是抽象基类的引用。这个类中提供一个重要的方法getDiscount(),通过分配的具体策略的_strategy.calculateDiscount()方法来得到折扣。而如何实现Book具体子类与Strategy具体子类的配对,将使用工厂方法模式。

使用Java设计一个图书打折系统 - 编程入门网

<<abstract>> Book.java

package com.zj.books; import com.zj.books.strategy.DiscountStrategy; public abstract class Book {    protected String _name;    protected int _typeCode;    protected double _price;    protected DiscountStrategy _strategy;    public Book(String name, int bookType, double price) {     _name = name;     _typeCode = bookType;     _price = price;    }    public double getDiscount() {     return _strategy.calculateDiscount();    } …… }

使用Java设计一个图书打折系统(3)

时间:2011-03-23 zhangjunhd

2.使用 Factory Method模式

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号