20岁不会敲代码 2022-03-01 14:33 采纳率: 83.3%
浏览 92
已结题

Java问题,主要是购物车那一块不知道如何写

项目:根据设计模式相关的知识点定义一个商品类,包括商品类型、价格、商品id,商品名称三个属性,有如下三个商品,【oppo、1999元、id:1】、【卫龙、0.5元、id:3】、【保暖裤、19元、id:4】,将这个三个商品加入购物车中去,并按价格从低到高输出。

  • 写回答

4条回答 默认 最新

  • qq_34370249 2022-03-01 17:54
    关注
    
    
    public class Test1 {
        public static void main(String[] args) {
            List<Commodity> shoppingCar = new ArrayList<>();
            CommodityFactory commodityFactory = new CommodityFactory();
            // 向购物车 加入卫龙
            shoppingCar.add(commodityFactory.create(Food.class).createCommodity());
            // 向购物车 加入 oppo
            shoppingCar.add(commodityFactory.create(Phone.class).createCommodity());
            // 向购物车 加入 保暖裤
            shoppingCar.add(commodityFactory.create(Clothes.class).createCommodity());
            // 排序
            shoppingCar.sort((o1, o2) -> {return o1.getPrice().compareTo(o2.getPrice());});
            System.out.println(shoppingCar);
        }
    }
    
    /**
     * 商品类
     */
    class Commodity{
        /**
         * id
         */
        private int id;
        /**
         * 价格
         */
        private BigDecimal price;
        /**
         * 产品名称
         */
        private String name;
    
        @Override
        public String toString() {
            return "Commodity{" +
                    "id=" + id +
                    ", 价格=" + price + "元" +
                    ", 产品名称='" + name + '\'' +
                    '}';
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public BigDecimal getPrice() {
            return price;
        }
    
        public void setPrice(BigDecimal price) {
            this.price = price;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    interface ICommodity{
        Commodity createCommodity();
    }
    
    /**
     * 创建 商品的工厂
     */
    class CommodityFactory{
        /**
         * 反射创建 对应的 类
         * @param clazz
         * @return
         */
        public ICommodity create(Class<? extends ICommodity> clazz){
            try {
                if (clazz != null){
                    return clazz.newInstance();
                }
            } catch (Exception e){
                e.printStackTrace();
            }
            return null;
        }
    }
    
    class Phone implements ICommodity{
        @Override
        public Commodity createCommodity() {
            Commodity commodity = new Commodity();
            commodity.setId(1);
            commodity.setName("oppo");
            commodity.setPrice(new BigDecimal("1999"));
            return commodity;
        }
    }
    
    class Food implements ICommodity{
        @Override
        public Commodity createCommodity() {
            Commodity commodity = new Commodity();
            commodity.setId(3);
            commodity.setName("卫龙");
            commodity.setPrice(new BigDecimal("0.5"));
            return commodity;
        }
    }
    
    class Clothes implements ICommodity{
        @Override
        public Commodity createCommodity() {
            Commodity commodity = new Commodity();
            commodity.setId(4);
            commodity.setName("保暖裤");
            commodity.setPrice(new BigDecimal("19"));
            return commodity;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月1日
  • 已采纳回答 3月1日
  • 创建了问题 3月1日

悬赏问题

  • ¥15 cplex运行后参数报错是为什么
  • ¥15 之前不小心删了pycharm的文件,后面重新安装之后软件打不开了
  • ¥15 vue3获取动态宽度,刷新后动态宽度值为0
  • ¥15 升腾威讯云桌面V2.0.0摄像头问题
  • ¥15 关于Python的会计设计
  • ¥15 聚类分析 设计k-均值算法分类器,对一组二维模式向量进行分类。
  • ¥15 stm32c8t6工程,使用hal库
  • ¥15 找能接spark如图片的,可议价
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥15 博通raid 的写入速度很高也很低