项目:根据设计模式相关的知识点定义一个商品类,包括商品类型、价格、商品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; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 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 悬赏!微信开发者工具报错,求帮改