2016-08-18 20 views
0

我在OO環境中工作,並且剛剛與同事進行了概念性討論。假設您有兩個類別(「A」和「B」),沒有共同的祖先,B需要從A獲取信息。它可以通過字段或獲取者來完成。困境是這些必須被宣佈爲「公開」,因此對全世界都是可見的。由於「私人」可見性是不可能的(由於不同的目的,在類樹中完全不同的位置),它們已經實現爲公共。在任何OO語言/模型中是否有像「受控可見性」這樣的概念?

但我不知道是否有一個概念(在任何 OO語言),這將允許控制,這些領域應該只看到B和其他沒有人?

回答

2

C++Friend classFriend function

的Java或類似的,如果你可以修改這兩個類,使用Visitor pattern

+0

謝謝 - 友誼看起來完全像我正在尋找的概念:) – MBaas

+0

這個答案談論在Java中以'朋友'類型的方式共享私人數據..使用類'A'和'B' :):http ://stackoverflow.com/questions/14226228/implementation-of-friend-concept-in-java – jrahhali

+0

@jrahhali:是的,事實上,它使用訪問者模式或其變體。 – charlie

0

在java中,你可以聲明protected和package私有字段/方法。受保護的字段/方法可以訪問同一個包中的類,以及擴展類。包私有字段/方法只對同一包中的類可訪問。

所以這種方式你不能指定一個應該只有acces的類,但是你可以將acces足夠好以達到在應用程序/庫中的相同效果。

請注意,java還提供了一些機制,通過設置acces和securityRules來禁止acces更健壯。它甚至可以防止反射(一種常見的方式來訪問java中通常不可訪問的字段/方法)。但它可能不是你正在尋找的機制,因爲它不是一個真正的基本概念。

相關問題