web-dev-qa-db-ja.com

「フレンズ」はJavaに相当しますか?

ここで少し建築上の問題があります。

C++では、「フレンド」という概念があり、そのようなフレンドクラスはプライベートメンバーにアクセスできます。

したがって、Javaアプリを考案し、MVCアーキテクチャに準拠しようとしています。「map_objects」間のグラフ接続を管理するコントローラークラスを持っています。非表示にしたいこのコントローラークラスを使用して、actuallがこれらの接続性を設定するDTO 'map_objects'の関数。

(つまり、コントローラークラスが接続性のセットアップに必要な機能を実装している場合でも、「ユーザー」はDTOのセッター/ゲッター関数に直接アクセスして自分でセットアップできます。)

この点に関して、デザインパターンやヒントはありますか? (または私は完全にうんざりしていますか?)

[〜#〜]複製[〜#〜]する方法はありますかJavaでC++の「友達」の概念をシミュレートしますか?

26
Alex Lim

(Un)残念ながら、Javaに直接対応するC++のフレンドはありません。ただし、 Javaアクセスレベル修飾子 が役立ちます。特に、privateまたはpackage private(別名、パッケージ保護、または「デフォルト」)が役立ちます。

20
Julien Chastang

interface segregation を使用することをお勧めします。つまり、クラスに異なるインターフェースを実装させ、適切な(小さい)インターフェースへの参照のみを異なるクライアントに渡すようにします。

17
Ilja Preuß