web-dev-qa-db-fra.com

«Amis» équivalent pour Java?

avoir un peu de problème architectural ici.

En C++, nous avons la notion d '"amis", où ces classes d'amis peuvent accéder aux membres privés.

Donc, je conçois une application Java et j'essaie d'adhérer à l'architecture MVC. J'ai une classe de contrôleur qui gère la connectivité graphique entre les 'map_objects'. Je voudrais masquer le fonction dans le DTO 'map_objects' qui actuall configure ces connectivités, en utilisant cette classe de contrôleur.

(C'est-à-dire que même si la classe de contrôleur implémente la fonctionnalité requise de configuration des connectivités, les `` utilisateurs '' peuvent toujours accéder directement aux fonctions setter/getter dans le DTO pour les configurer eux-mêmes.)

Y a-t-il des modèles de conception ou des conseils à cet égard? (Ou ai-je totalement foiré?)

[~ # ~] dupliquer [~ # ~]Existe-t-il un moyen de simuler le C++ concept 'ami' en Java?

26
Alex Lim

(Un) heureusement, il n'y a pas d'équivalent ami C++ direct en Java. Cependant, les modificateurs de niveau d'accès Java peuvent vous aider. En particulier, private ou package private (AKA package protected, ou "default") peut aider.

20
Julien Chastang

Vous voudrez peut-être utiliser ségrégation d'interfaces - c'est-à-dire laisser la classe implémenter différentes interfaces et ne transmettre que des références aux interfaces appropriées (plus petites) aux différents clients.

17
Ilja Preuß