2

私が尋ねている質問は非常に頻繁なトピックに関するものですが、正確な質問が見つからなかったので、明示的に質問しています。

私は Java でプログラミングしており、A、B、C、D などのいくつかのクラスを実装する必要があります。これらはすべて SDK の一部であり、D のみが公開されます (私の SDK を使用する開発者に表示されます)。

A、B、C は、互いに通信する必要がありますが、異なるトピック (Bluetooth 通信、Web サービスの使用、および独自のアルゴリズムなど) を扱うクラスです。「スキル」(公開メソッド、Bluetooth、Web サービス、アルゴリズム) に応じてパッケージ内のクラスを分割したいのですが、異なるパッケージを作成すると、互いに表示されなくなります。

したがって、ここで目にする唯一の実装は、一意のパッケージであり、修飾子はありません (したがって、それらは互いに「認識」され、ユーザーはクラス D にのみアクセスします)。SDK をより良い方法で整理できるように、さまざまなパッケージを作成する方法はありますか? (多くのクラスを想像してみてください。簡単に混乱する可能性があります:))

よろしくお願いいたします。

ジョルジオ

4

3 に答える 3

1

あなたが何をしようとしているのか理解できたとしても、Java 言語がそれを実行する方法を提供するとは思えません。

あなたの質問に対する私の理解は、「私は特定のクラスやメソッドのみを公開したい API を開発しています。パッケージ内の他のクラスやメソッドは、公開されたものによって使用される必要がありますが、私はそれらを望んでいません。 public とマークされているため、プログラマーは API を使用して利用できます。」

なぜこれが必要なのか、または望ましいのかは言いません。

この言語は、この方法での可視性をサポートしていません。難読化ツールを使用して非表示にしたいコードを実行し、それらのメソッドが何であるかを理解して呼び出すことを (大いに) 思いとどまらせることができます。もちろん、使用したいものを難読化しないでください。と。

于 2013-03-11T16:34:25.303 に答える
1

これを行う正しい方法は、共通のインターフェイスとデータ (列挙型、Point などの単純なクラスなど) を保持するパッケージを用意することだと思います。他のすべてのパッケージは、この共通パッケージを参照し、それらのクラスは共通インターフェースを実装します。

これにより、異なるパッケージ間の真の分離の利点も得られます。

于 2013-03-11T16:03:40.437 に答える
0

クラスに異なるパッケージを使用できます。他のパッケージの他のクラスで表示できるように、それらが公開されていることを確認してください。

于 2013-03-11T16:06:41.940 に答える