我現在遇到過這麼幾次了,我想知道什麼是解決循環引用的OO方法。我的意思是,甲級擁有B級會員,而乙級會員級別爲A級。如何解決OOP中的交叉引用問題?
這樣做的一個例子是將Person配偶作爲成員的Person類。
Person jack = new Person("Jack");
Person jill = new Person("Jill");
jack.setSpouse(jill);
jill.setSpouse(jack);
另一個例子是將某些其他產品集合作爲成員的產品類。例如,這個集合可以是那些對這個產品感興趣的人也可能感興趣的產品,並且我們想要在每個產品基礎上維護這個列表,而不是在相同的共享屬性上(例如,我們不想僅顯示所有其他同類產品)。
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);
(這些產品只是單純的點,這個問題是不是用是否某些產品將相互關聯的)
這會是糟糕的設計在面向對象有什麼看法?所有的面嚮對象語言是否會允許這樣做,還是僅僅是不好的做法?如果這是不好的做法,解決這個問題最好的方法是什麼?
@Jon Limjap:感謝您糾正錯字。 – tehvan 2009-03-05 08:18:04