大话设计模式-原型模式的实践-限制订单最大数量

/*
* 订单处理系统 原型模式实现
现在有一个订单处理系统,里面有一个保存订单的业务功能,需求:
1.每当订单的预定产品数量超过1000的时候,就需要把订单拆成两份订单来保存。
2.如果拆成两份后还是超过1000,则继续拆分,直到每份产品预订数量不超过1000.
根据业务,目前的订单系统分成两种,一种是个人订单、一种是公司订单。
客户名称、产品对象(ID,Name),订购产品数量。
公司名称、产品对象(ID,Name),订购产品数量。
*/

 产品类:

/**
 * @ClassName: Product
 * @Author: Leo
 * @Description:
 * @Date: 2019/4/4 19:14
 */
public class Product implements Cloneable {
    private int id;
    private String name;

    public Product() {
    }

    public Product(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public String toString() {
        return "ID: " + id + "  Name: " + name;
    }
}

订单类(包含产品对象): 

/**
 * 订单
 */
public class Order implements Cloneable {
    private String name;
    private Product product;
    private int num;

    public Order() {
    }

    public Order(String name, Product product, int num) {
        this.name = name;
        this.product = product;
        this.num = num;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Product getProduct() {
        return product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public String toString() {
        return "Name: " + name + " {" + product.toString() + "} Num: " + num;
    }
}

Main: 

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static final int MAX_NUM = 10;

    public static void main(String[] args) throws CloneNotSupportedException {
        List list = new ArrayList<Order>();
        Product product = new Product(1, "iPhone");
        Order order = new Order("BaiDu", product, 100);
        //list.add(order);
        while (order.getNum() > MAX_NUM) {
            Order temp = (Order) order.clone();
            temp.setNum(MAX_NUM);
            list.add(temp);
            order.setNum(order.getNum() - MAX_NUM);
        }
        list.add(order);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).toString());
        }
        System.out.println(list.size());
    }
}

 

全部评论

相关推荐

最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello&nbsp;world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务