Tôi đã gặp phải điều này một vài lần, và tôi tự hỏi cách OO để giải quyết các tham chiếu vòng tròn là gì. Bởi vì tôi có nghĩa là lớp A có lớp B là một thành viên, và B lần lượt có lớp A là một thành viên.Làm thế nào để giải quyết crossencess chéo trong OOP?
Một ví dụ về điều này sẽ là lớp Người có người phối ngẫu Người làm thành viên.
Person jack = new Person("Jack");
Person jill = new Person("Jill");
jack.setSpouse(jill);
jill.setSpouse(jack);
Ví dụ khác là các lớp sản phẩm có một số Bộ sưu tập các sản phẩm khác làm thành viên. Ví dụ, bộ sưu tập đó có thể là sản phẩm mà những người quan tâm đến sản phẩm này cũng có thể quan tâm và chúng tôi muốn duy trì danh sách đó trên cơ sở mỗi sản phẩm, chứ không phải trên cùng thuộc tính được chia sẻ (ví dụ: chúng tôi không muốn chỉ hiển thị tất cả các sản phẩm khác trong cùng một danh mục).
Product pc = new Product("pc");
Product monitor = new Product("monitor");
Product tv = new Product("tv");
pc.setSeeAlso({monitor, tv});
monitor.setSeeAlso({pc});
tv.setSeeAlso(null);
(các sản phẩm này chỉ để làm một điểm, vấn đề này không phải là về thời tiết hay không sản phẩm nào đó sẽ liên hệ với nhau)
này sẽ được thiết kế xấu trong OOP nói chung? Liệu tất cả các ngôn ngữ OOP có nên cho phép điều này, hay nó chỉ là thực hành không tốt? Nếu đó là thực hành không tốt, thì cách nào tốt nhất để giải quyết vấn đề này?
@Jon Limjap: Cảm ơn bạn đã sửa lỗi đánh máy. – tehvan