小编Ste*_*row的帖子

在OO模型中添加双向关系的最佳实践

我正在努力想出一个在OO模型中添加双向关系的好方法.假设有一个客户可以下多个订单,也就是说客户和订单类之间存在一对多关联,需要在两个方向上遍历:对于特定客户,应该可以告诉所有订单他们已下订单,对于订单,应该可以告诉客户.

这是一段Java代码,虽然这个问题主要与语言无关:

class Customer {
 private Set orders = new HashSet<Order> ();

        public void placeOrder (Order o) {
     orders.add(o);
            o.setCustomer(this);
 }
}

class Order {
 private Customer customer;
        public void setCustomer (Customer c) {
  customer = c;
 }
}
Run Code Online (Sandbox Code Playgroud)

让我感到困惑的是,鉴于模特有人可以轻易打电话:

o.setCustomer(c);
Run Code Online (Sandbox Code Playgroud)

而不是正确的

c.placeOrder(o);
Run Code Online (Sandbox Code Playgroud)

形成单向链路而不是双向链路.

仍在学习OOP,任何人都可以请求帮助解决这个问题的惯用和实用方法,而不诉诸"反思"或花哨的框架(无论如何都依赖于反思).

PS有一个类似的问题:在我的java模型中管理双向关联,但我觉得它不能回答我的请求.

PSS任何链接到在db4o之上实现业务模型的现实项目的源代码都非常感谢!

java language-agnostic oop db4o model

12
推荐指数
2
解决办法
2777
查看次数

标签 统计

db4o ×1

java ×1

language-agnostic ×1

model ×1

oop ×1