私は、オープンソースライブラリであり、(おそらく)他の開発者によって使用される最初の「APIjar」を書いています。Joshua Blockの効果的なAPI設計に関する論文を読みましたが、彼が話していることの1つは、アクセスを最小限に抑え、情報の隠蔽を最大化するという彼の概念です。基本的に、API開発者が使用するJavaオブジェクトにのみアクセスできるようにし、API開発者がライブラリの「ガッツ」にアクセスできないようにする必要があります。
Java開発者としての数年間、クラスを.以外のものにする必要はありませんでしたpublic。さらに、ネストされたクラスも使用したことがありません。だから私はここに座って、Java APIでこの「情報隠蔽」のベストプラクティスをどのように実装するのか疑問に思っていますか?そして、私はプライベートな、そしておそらくネストされたクラスが答えだと思います。しかし、どこから始めればよいのでしょうか。
- すべてのソースファイルは、コンパイルするため
.javaに少なくとも1つのクラスを必要とします。publicしたがって、クラスを作成するprivate(およびネストされていない)には、「クラスとバンドルする必要がありpublicます。これは、/クラスが密接に関連している場合にのみ意味があります。しかし、APIのセクションが他のアナログとは関係のないクラス(アクセシビリティを最小化する目的)で構成されていますか?publicprivateprivatepublic - クラスをいつ
privateネストし、いつ非ネストにしますか?それとも好みの問題ですか?