• 大小: 4KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Java
  • 标签: java  

资源简介

大作业设计模式一(单子、工厂、策略模式)练习 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本7%的促销折扣;而对非教材类的计算机图书有3%的折扣;对其余书没有折扣。使用策略模式、工厂模式、单子模式进行设计

资源截图

代码片段和文件信息

package homework6;

import java.util.ArrayList;

class PricingStrategyFactory{
private static PricingStrategyFactory instance;
private PricingStrategyFactory  () {}
public static synchronized PricingStrategyFactory getInstance() {
if(instance == null) {
instance = new PricingStrategyFactory ();

return instance; 
}
    public IPricingStrategy getPricingStrategy(int bookType){
     IPricingStrategy ips = null;
     switch(bookType) {
     case 0: ips = new NoDiscountStrategy();break;
     case 1: ips = new FlatRateStrategy(1);break;
     case 2: ips = new PercentageStrategy(3);break;
     case 3: ips = new PercentageStrategy(7);break;
     }
     return ips;
    }
}

class ProductSpecification{
public String isbn;
public String title;
    public double price;
    public int type;
    public ProductSpecification(String s1String s2double dint t){
     isbn=s1; title=s2; price=d; type=t;
    }
    public double getPrice(){
     return price;
    }
    public String toString(){
     return String.format(“isbn:%-20stitle:%-20sprice:%-20stype:%-20s“ isbntitlepricetype);
    }
}


class SaleLineItem {
    private int copies;
    private ProductSpecification pSpec;
    private IPricingStrategy strategy;
    public SaleLineItem(int cProductSpecification p){
     copies=c;
     pSpec=p;
     PricingStrategyFactory psf = PricingStrategyFactory.getInstance();
     strategy = psf.getPricingStrategy(pSpec.type);
    }
    public void setCopies(int c){copies=c;}
    public int getCopies(){return copies;}
    public String gettitle(){return pSpec.title;}
    public String getIsbn(){return pSpec.isbn;}
    public double getPrice(){return pSpec.price;}
    public double getSubTotal(){return strategy.getSubTotal(this);}
}

interface IPricingStrategy{
public int getStrategyType();
public String getData();
public double getSubTotal(SaleLineItem item);
}

class NoDiscountStrategy implements IPricingStrategy{
public int strategyType=0;
public String getData(){return “0“;}
public int getStrategyType(){return strategyType;}
    public double getSubTotal(SaleLineItem item){
     return item.getPrice()*item.getCopies();
   

评论

共有 条评论