“朋友”等同于Java?

2022-09-01 19:00:55

这里有一点建筑问题。

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

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

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

在这方面是否有任何设计模式或技巧?(还是我完全搞砸了?

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


答案 1

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


答案 2

您可能希望使用接口隔离 - 即,让类实现不同的接口,并且仅将对相应(较小)接口的引用传递给不同的客户端。


推荐