2

シンプルな CRUD アプリケーション (Java を使用) のどこにユーザー インターフェイスを配置する必要がありますか。
私のアプリケーションには、メインクラスと、データベースから情報を取得したり、新しい情報を追加したりするなど、データベースに関係するすべてのものを処理する別のクラスがあります。

UI要素をメインクラスに保持し、データベースクラスをそのままにして、ユーザー入力を転送する方が賢明ですか。たとえば、次のようにデータベースクラスに新しい要素を追加します。

public static void main(String[] args) {
   Scanner scan = new Scanner(system.in);

   System.out.println("Give me your name:");
   String name = scan.nextLine();

   DatabaseHandler db = new DatabaseHandler();
   db.addNameToDatabase(name);  
}

または、入力プロンプトが 内に存在する必要があるDatabaseHandlerため、メインクラスでは、次のようにメソッド呼び出しのみが表示されます。

public static void main(String[] args) {
  DatabaseHandler db = new DatabaseHandler(); 
  db.addNameToDatabase(); //user interface now inside addNameToDatabase method  
}
4

2 に答える 2

0

開発中は常に覚えておいてください-high cohesionlow coupling。あなたの特定の質問については、このように考えてください-どちらのアプローチでも、あなたは持っていhigh cohesionますか?databaseいいえ。クラスがユーザー入力を処理する必要があるのはなぜですか。そして、なぜこのmainメソッドはユーザー入力を処理する必要があるのでしょうか。いいえ、どちらの方法も、理想的には間違っています。

しかし、理想的な状況に出くわすことはめったにありません。IOは別のクラスで処理する必要があり、データベースは別のクラスで処理する必要があります。UIも同様です。また、これらのクラス内でも、各メソッドに特定のタスクが必要です。たとえば、IOクラスでゲッターとセッターを使用して、変数を取得および設定します。すべきことを実行する各メソッドは、高い凝集度を保証します。このようにして、モジュールが相互依存しないため、結合度も低くなります。あなたは思うかもしれません-まあ、私はこれらすべてを1つのクラスで書いてそれを乗り越えることができますが、このアプローチには多くの利点があることを忘れないでください。あなたのコードのメンテナンスが他の誰かによって行われなければならない状況では、彼らは問題を探す場所を知るためにクラスとメソッドの名前で知っているでしょう。何年も経ってから自分のコードを見なければならない状況では、

覚えておいてください-高い凝集度と低い結合度FTW!

理想的には、メインはプログラムの開始点にすぎず、他には何もありません。

于 2012-06-05T16:16:41.910 に答える
0

それは本当にあなたのプログラムのサイズに依存します。プログラムが小さくて 1 つのファイルで読みやすい場合は、そのままにしておいてください。プログラムが大きくなるにつれて、明確にするためにそれを分割することが必要になります。(それが本当に小さい場合は、単純な手続き型のコーディング方法が 1 つのクラス内で最適である可能性があります。)
それを分割する場合、メイン クラスは UI 部分とデータ部分の両方のドライバーである必要があります。モジュール。分割方法については、MVC や MVP などのさまざまなパターンを確認することをお勧めします。
ご覧のとおり、万能な方法はありません。コンポーネント/モジュール/パッケージに分割された大規模なプログラムは、配線のために腕を動かすのが難しくなりますが、チームが作業しやすくなります.

于 2012-06-05T14:17:20.240 に答える