Java-用类描述电商概念

151 阅读2分钟

用类描述电商概念

接下来,我们用类来描述一下电商系统中的一些基本概念,电商系统中最基本的有产品、用户和订单。

1)产品:有产品唯一id、名称、描述、图片、价格等属性。

2)用户:有用户名、密码等属性。

3)订单:有订单号、下单用户、选购产品列表及数量、下单时间、收货人、收货地址、联系电话、订单状态等属性。

当然,实际情况可能非常复杂,这是一个非常简化的描述。

产品类Product如代码清单3-3所示。

代码清单3-3 表示产品的类Product

public class Product {

    //唯一id

    private String id;

    //产品名称

    private String name;

    //产品图片链接

    private String pictureUrl;

    //产品描述

    private String description;

    //产品价格

    private double price;

}

我们省略了类的构造方法,以及属性的getter/setter方法,下面大部分示例代码也都会省略。

这是用户类User的代码:

public class User {

    private String name;

    private String password;

}

一个订单可能会有多个产品,每个产品可能有不同的数量,我们用订单条目OrderItem这个类来描述单个产品及选购的数量,如代码清单3-4所示。

代码清单3-4 表示订单条目的类OrderItem

public class OrderItem {

    //购买产品

    private Product product;

    //购买数量

    private int quantity;

    public OrderItem(Product product, int quantity) {

        this.product = product;

        this.quantity = quantity;

    }

    public double computePrice(){

        return product.getPrice()*quantity;

    }

}

OrderItem引用了产品类Product,我们定义了一个构造方法,以及计算该订单条目价格的方法。

订单类Order如代码清单3-5所示。

代码清单3-5 表示订单的类Order

public class Order {

    //订单号

    private String id;

    //购买用户

    private User user;

    //购买产品列表及数量

    private OrderItem[] items;

    //下单时间

    private Date createtime;

    //收货人

    private String  receiver;

    //收货地址

    private String address;

    //联系电话

    private String phone;

    //订单状态

    private String status;

    public double computeTotalPrice(){

        double totalPrice = 0;

        if(items!=null){

            for(OrderItem item : items){

                totalPrice+=item.computePrice();

            }

        }

        return totalPrice;

    }

}

Order类引用了用户类User,以及一个订单条目的数组OrderItem,它定义了一个计算总价的方法。这里用一个String类表示状态status,更合适的应该是枚举类型,枚举我们第5章再介绍。

以上类定义是非常简化的,但是大致演示了将现实概念映射为类以及类组合的过程,这个过程大概就是,想想现实问题有哪些概念,这些概念有哪些属性、哪些行为,概念之间有什么关系,然后定义类、定义属性、定义方法、定义类之间的关系。概念的属性和行为可能是非常多的,但定义的类只需要包括那些与现实问题相关的就行了。

[]www.bilibili.com/video/BV1nZ…