2012-04-25 6 views
7

私は、データを取得してウェブサイトから解析する私の最初のAPIを作っています。だから、そこにはたくさんのネットワークと解析があります。私は公開されてはならない内部パッケージを持つAPIについて読んでいます。 Javadocsのように。だから私の質問は、内部パッケージに入れてはいけないことです。ここでは私のパッケージデザインですが、重要ではないものは除外しています。Java APIデザイン - 内部デザイン

.networkstats 
.networkstats.model 
.networkstats.parser 

networkstatsパッケージ内NetworkStatsというクラスがあります。これは、すべてのネットワーク接続を処理および取得するメインクラスです。次に、parserパッケージ内のクラスを使用してデータを処理します。 modelパッケージ内のデータを保持するModelクラスを返します。私は、内部パッケージをインクルードする必要があります。なぜなら、ユーザが使用することを意図していないいくつかのクラスとインタフェースが存在するからです。

たとえば、クラスをすべてのネットワーク接続を処理して、NetworkStatsなどの他のクラスにアクセスできるようにしたいとします。その理由は、他のクラスのコードを1つの場所にコピーしたくないからです。もちろん、私はこのクラスを使用する他のユーザーには嫌なので、それを内部パッケージに入れますか?私もparserパッケージを内部パッケージに入れています。だから私の主な質問は、内部パッケージに一般公開されていないクラスやインターフェイスを置くのですか?私は彼らがまだそれにアクセスするが知っている。あなたがする必要があります機能のようなものをしたい場合、私は、サブパッケージが他のパッケージと同じです言いたいすべての最初の

.networkStats.internal.DataManager // class that handles network connections 
.networkStats.internal.parser 

答えて

10

このJava API設計チェックリストが役立つ場合があります。最初のセクションはパッケージデザインに関するものです。

http://theamiableapi.com/2012/01/16/java-api-design-checklist/

は私がOSGIについて聞いたが、それが何であるか本当にわからない、感謝してい

+0

ありがとう、そのページは本当に私を助けました。私はそれをよく理解していますが、そのリンクには私を助ける多くの情報があります。 –

+0

私はチェックリストを読みました。 –

3

は、通常のJavaの民間のパッケージのようなものはありませんOSGiを使用する

これは、クラスのアクセスを禁止する場合は、クラス名でパブリックを削除し、「API」クラスのみをパブリックにしておきます。これは、ユーザーがアクセスするクラスですユーザーはフレームワークを使用する開発者)。

作成するパッケージが多くなるほど、公開する必要がある「プライベート機能」が増えます。

+0

フェレンツ、私は今あなたが言ったように私はクラスにアクセス可能に変更する必要があることを知っています。 –

関連する問題