Java中的“Friends”相当于什么?

25

在这里遇到了一些架构上的问题。

在C++中,我们有“友元”(friends)的概念,这样的友元类可以访问私有成员。

所以,我正在开发一个Java应用程序,尝试遵循MVC架构。我有一个控制器类来管理“地图对象”之间的图形连接性。我想通过使用这个控制器类隐藏DTO“map_objects”中实际设置这些连接性的功能。

即使控制器类实现了设置连接性所需的功能,“用户”仍然可以直接访问DTO中的setter/getter函数来自行设置它们。

在这方面有任何设计模式或提示吗? (或者我完全搞砸了?)

重复:在Java中是否有一种模拟C++“友元”概念的方法?

2个回答

20

(不)幸运的是,Java 中没有直接对应 C++ 中的友元。然而,Java 访问控制修饰符 可以帮助你。特别是,private 或 package private(也称为 package protected 或者 "default")可以起到作用。


17
你可能希望使用接口隔离原则,即让类实现不同的接口,并仅向不同的客户端传递适当(更小的)接口的引用。请保留HTML标记:

您可能希望使用接口隔离 - 即,让类实现不同的接口,并只向不同的客户端传递适当(更小的)接口的引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接