2010-07-19 10 views
1

Disons que vous avez un FooManager conçu pour gérer plusieurs objets de type Foo. Le FooManager doit voir certaines parties de ses Foo s pour évaluer leur état actuel. Avant d'utiliser quelques accesseurs dans Foo pour voir ces pièces, jusqu'à ce que je me suis rendu compte que FooManager est la seule classe qui les utilise réellement. J'ai décidé de faire un ami de Foo. Cela a entraîné la plupart de la classe Foo devenir privé.Utilisation appropriée d'un ami? Classe de conteneur conçue pour manipuler des objets de type spécifique

Est-ce une utilisation appropriée d'un ami? Mon raisonnement était qu'il aide à l'encapsulation, car alors qu'il donne FooManager un accès complet aux internes de Foo, il bloque complètement l'accès à tout le reste.

Répondre

1

À moins qu'il n'y ait une manière différente et plus propre d'atteindre ce que vous essayez d'atteindre, cela semble être une approche équitable.

En ce qui concerne l'encapsulation, voir: http://www.parashift.com/c++-faq-lite/friends.html#faq-14.2.

+0

En fait, j'ai utilisé l'idiome avocat-client qu'un gars posté, mais malheureusement, sa réponse a disparu. Tant pis. – random