2016-05-04 2 views
-2

私はパッケージorg.jdesktop.swingx.JXErrorPaneから特定のクラスを持っています。1つのクラスのみが特定のAPIクラスにアクセスできるようにする方法

私はJXErrorPaneを呼び出すために、他のクラスを禁止しながら、JXErrorPaneクラスのメソッドを呼び出すためにファクトリクラスを使用していました。 JXErrorPaneクラスを使用する必要がある他のクラスは、ファクトリクラスを呼び出す必要があります。

特定のクラスまたはパッケージへのアクセスを禁止する方法については、このウェブサイトのhttp://www.eclipsezone.com/eclipse/forums/t53736.htmlにありますが、工場クラスも禁止されています。

ファクトリクラスがAPIクラスにアクセスすることを許可するだけですが、他のクラスは禁止しますか?

+0

'JXErrorPane'を制御できますか?もしそうなら、それを 'package-private'にして' public'修飾子を使って 'Factory'を同じパッケージに置くことができます。同じパッケージ(例えば、あなたの工場)のクラスだけが 'JXErrorPane'にアクセスできます。 – Jaims

答えて

0

あなたの質問はちょっと変わっていますが、ここでは2セントの価値があります。アクセス修飾語はあなたの友人にする必要があります。クラスレベルでのデフォルトのアクセス修飾子は、クラスをパッケージ外で表示したくない場合に意味があります。デフォルトコンストラクタは、オブジェクトの構築をパッケージ内でのみ表示するように制限します。私は、これがあなたの質問で参照している工場のアプリケーションだと仮定しています。ファクトリはオブジェクトを作成するためのものです。

あなたの工場にメソッドへの呼び出しを制限するとして、それは工場の正しいアプリケーションではありません。おそらく、あなたはProxyかDelegateのどちらかのパターンを探しているでしょう。その場合でも、アクセス修飾語はあなたの友人です。なぜあなたはそのような複雑さが欲しいのか分かりません。

関連する問題