25

这里有一点架构问题。

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

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

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

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

重复 有没有办法在 Java 中模拟 C++ 的“朋友”概念?

4

2 回答 2

20

(不)幸运的是,Java 中没有直接的 C++ 朋友等价物。但是,Java 访问级别修饰符可以帮助您。特别是,私有或包私有(AKA 包保护,或“默认”)可能会有所帮助。

于 2008-12-17T23:31:38.793 回答
17

您可能想要使用接口隔离——也就是说,让类实现不同的接口,并且只将对适当(较小)接口的引用传递给不同的客户端。

于 2008-12-17T23:52:21.560 回答