2

私は、ライブラリ管理システムのダミープロジェクトを構築することによって、JavaOOPの概念を実践しているだけです。

最初はBook、Customer、Administrator(Customer、Administratorが抽象ユーザークラスを拡張)のクラスを持っていましたが、次に、ArrayList内の上記のクラスのインスタンスのリストを保持するリストクラスBookCollection、CustomerCollectionを作成しました(しばらくの間データベースを処理していません)。対応するArrayListでadd、delete、sortメソッドを実行します(1つのインライン質問:データベースの処理を開始したら、ArrayList関連のコードをデータベース操作に置き換え、各xyzCollectionがデータベース内のxyzTableを処理する場合は良い設計手法になります

主な問題:以前、アプリ全体で書籍、顧客のリストのみを維持する必要があると考えていたため、ArrayListsを静的にしました。また、私は十分な静的メソッドを作成しました:addXyz、deleteXyz、searchXyz、sortXyzメソッドしかし今、私は顧客や本の検索のために名前に一致するそれらのリストを返す必要があるかもしれない(あるいはそうすべきである)ことに気付きました。別のArrayListを返します。これは、xyzCollectionのインスタンスである必要がありますが、すべてのインスタンス間で安定して共有されているため、これらのxyzCollectionでArrayListを使用することはできません。

最初は共有ArrayListが必要であるように見えましたが、現在は最初の決定に疑問を持っています。何が正しいのでしょうか?:

  • ArrayListと対応するメソッドを非静的にし、呼び出し時に対応するコードを変更する必要があります
  • または、XyzCollectionの代わりにArrayListを返す必要があります

コード設計の観点から何が良くなるでしょうか?または、それらをすべて静的にすることで明確な間違いを犯しましたか?

4

2 に答える 2

2

DBからデータを取得した後、コレクションブック/顧客を作成していると思います。あなたが言うように、複数のユーザーが同時に使用できるライブラリ管理システムです。また、各リクエストは互いに独立しています (典型的な分散システムのように)。

したがって、 static の代わりに通常のクラスを使用することをお勧めします。データベースへの接続などのユーティリティを管理するために静的を使用できますが、本/顧客のリストのようなプレースホルダーとしては使用できません。

于 2012-12-31T07:15:59.423 に答える
0

私の考えでは、データベースでの作業は、配列リストの概念を使用するよりもはるかに簡単です。配列を使用する場合と同様に、値にアクセスできるように配列を共有する必要があります。それを作るためのあなたの概念的なデザインがわからないので、それを単なる意見と考えてください。

于 2012-12-31T07:13:07.120 に答える