我正在寻找一个设计解决方案来解决我有两个相互依赖的类的问题,这样我就有了class Customer
,class Order
在哪里:
Customer
可以有一个订单列表(1 对 N)并且Order
有一个指定的客户(1 对 1)。
打破这种依赖关系的最佳实践是什么?
我正在寻找一个设计解决方案来解决我有两个相互依赖的类的问题,这样我就有了class Customer
,class Order
在哪里:
Customer
可以有一个订单列表(1 对 N)并且Order
有一个指定的客户(1 对 1)。
打破这种依赖关系的最佳实践是什么?
假设您有如下依赖项:
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 类中删除客户。还是我误解了你的问题?
作为一名大约 2 年的软件工程师,我见过的最好的情况是对一个类进行影子定义,而不将其初始化为任何内容,只需告诉编译器“嘿订单存在”,然后定义另一个明确的类,然后是明确的订单类。这会让你朝着正确的方向前进吗?节点和树有时会以这种方式建模,数据结构和算法分析书籍也往往对此有不错的设计解决方案。