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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改