1

我正在寻找一个设计解决方案来解决我有两个相互依赖的类的问题,这样我就有了class Customerclass Order在哪里:

Customer可以有一个订单列表(1 对 N)并且Order有一个指定的客户(1 对 1)。

打破这种依赖关系的最佳实践是什么?

4

2 回答 2

3

假设您有如下依赖项:

public class Customer {
    private long customerId;
    private String name;
    private String address1;
    // ....
    private List<Order> orders;
}

public class Order {
    private long orderNumber;
    private Date orderDate;
    // ... others
    private Customer customer;
}

您可以创建第三个类来打破依赖关系:

public class CustomerOrder {
    private final Customer customer;
    private final List<Order> orders;
    public CustomerOrder(Customer customer) {
        super();
        this.customer = customer;
        this.orders = new ArrayList<Order>();
    }
    public void addOrder(Order order) {
        orders.add(order);
    }
    public Customer getCustomer() {
        return customer;
    }
    public List<Order> getOrders() {
        return orders;
    }
}

现在您可以从 Customer 类中删除订单,并从 Order 类中删除客户。还是我误解了你的问题?

于 2016-02-13T16:59:28.750 回答
-1

作为一名大约 2 年的软件工程师,我见过的最好的情况是对一个类进行影子定义,而不将其初始化为任何内容,只需告诉编译器“嘿订单存在”,然后定义另一个明确的类,然后是明确的订单类。这会让你朝着正确的方向前进吗?节点和树有时会以这种方式建模,数据结构和算法分析书籍也往往对此有不错的设计解决方案。

于 2018-12-24T00:47:57.043 回答