2016-03-28 1 views
2

こちらのベストプラクティスについては疑問があります。MVCスタイルを使用すると、クエリ関数を呼び出すのに最適な場所はどこですか?

MVC(Model - View - Controller)パターンは、データをモデル化し、そのモデルを操作し、その結果をユーザーに(通常はUIを通じて)何らかの形で表示する、

モデルデータを取得してデータベースに挿入する関数についてはどうですか?たとえば、GameBoardというオブジェクトがあります。また、このボードの状態をストレージ/履歴目的でSQLデータベースに挿入する機能も必要です。すべてのクエリ関数を保持するクラスがあります。私は、クエリの呼び出しをどこに格納するかを尋ねるのではなく、それらはすべて1つのクラスにカプセル化されています。

ただし、これらの関数はどこから呼び出されますかからはどこですか?この種の機能は、GameBoardの方法としてそれを作るのが最も理にかなっていますか?それともコントローラクラスの一部であるべきですか?理想的な世界では

+2

を読む

私はドはGameBoardを初期化し、クエリを使用してクラスを使用してDBに格納するためのメソッドを呼び出す1コントローラであるべきだと思います。 GameBoardは、DBにボードのステータスを登録する必要があるときに、コントローラによって呼び出される状態を取得する方法を持つことができます。 – RubioRic

+0

@RubioRicそれも私が考えていることですが、他の人からそれを聞いて、私が正しい道にいるかどうかを知ることは役に立ちます。ありがとう! –

答えて

1

、はGameBoard状態の永続性は、イベントゲームに耳を傾ける必要があります実行するクラス:

  1. UIのボタンがクリックされたが
  2. コントローラは、いくつかのモデルメソッドを呼び出します(1によってインクリメントカウンタ)
  3. モデルを更新し、その内部状態
  4. モデルは状態変更イベントに関心のあるすべてのリスナーに通知します
  5. コントローラはイベントを受信し、UIを更新します
  6. DBコンポーネントがイベントを受信し、ユーザーがデータベースのデータとビューを更新するために、UIのボタンをクリックすると、データベースに

にはGameBoard状態を保存します

  1. UIボタンが
  2. コントローラがデータをロードをクリックしますモデル更新メソッドを呼び出す

次の3-4-5のステップは同じです

+0

ユーザーがデータベースからデータを取得するためにUIボタンをクリックした場合。あなたはこれのためのステップを置くことができますか?私はこのユーザーがボタンをクリックするように、コントローラはビ​​ジネスロジック(ビジネス層)を呼び出すと思います。モデルはビジネスロジックモデルの変更をリッスンし、MVC(プレゼンテーションレイヤー)のモデルを更新します – mubeen

+0

@mubeenが更新されました。ほとんど同じです – AdamSkywalker

1

ただし、これらの機能はどこから呼び出すのですか?

コントローラ内にあります。通常、コントローラーには入力と出力のためのオブジェクトをモデル化する依存関係があります。例えば。

enter image description here

は、あなたのアーキテクチャに応じて、あなたは、コントローラ下のアプリケーション・サービスをご紹介することがあります。続きhttps://www.link-intersystems.com/blog/2013/07/20/the-mvc-pattern-implemented-with-java-swing/

0

詳細はMVCのためのポイントです。

  1. は、プレゼンテーションの間に強い分離(ビュー&コントローラ) とドメイン(モデル)を作成します。
  2. GUIウィジェットをコントローラー(ユーザー刺激に反応するため) とビュー(モデルの状態を表示するため)に分割します。
  3. コントローラーとビューは、(ほとんど)直接通信しないでください。 のモデルObserver Synchronizationで通信する必要があります。

どこからこれらの関数を呼び出すのですか?

これらの機能は、domain model(モデル)から呼び出してください。さらにmartin fowler