web-dev-qa-db-ja.com

MVCスタイルを使用して、SQL機能を配置するのに最適な場所はどこですか?

ここでのベストプラクティスについて疑問に思っています。

MVC(モデル-ビュー-コントローラー)パターンでは、データをモデル化し、それらのモデルを操作し、何らかの方法で(通常はUIを介して)ユーザーに結果を表示するプログラムのコンポーネントを分離します。

モデルデータを取得してデータベースに挿入する関数についてはどうですか?たとえば、GameBoardと呼ばれるオブジェクトがあり、このボードの状態をSQLデータベースに挿入して、ストレージや履歴の目的で使用することもできます。すべてのクエリ関数を保持するクラスがあります。

しかし、これらの関数はどこから呼び出しますか?この種類の機能は、GameBoardのメソッドとして作成するのに最も意味がありますか?それともコントローラークラスの一部にする必要がありますか?

たとえば、GameBoardクラスとSQLDatasource/SQLHelperクラス(「モデル」と呼びます)があります。 SQLクラスには、クエリなどを処理するメソッドがあります。 Androidには、すべての「イベント」が発生するアクティビティクラスもあります(私はこれを「コントローラー」と呼びます)。 「ビュー」は、アクティビティをXMLにバインドするコードを介して行われます。そうは言っても、私は通常、アクティビティクラスでGameBoardをインスタンス化し、現在は、GameBoardを引数として受け入れるこれらの同じクラスからクエリ関数も呼び出しています。

3
AJJ

典型的な(しかし単純化された)MVCアーキテクチャは次のようになります。

Database <-->  Logic Layer <--> Controller <--> View

ロジックレイヤーには、ゲーム関連のアクティビティを実行するために呼び出す関数が含まれています。ロジックレイヤーの目的は、ゲーム関連の機能をデータベース操作に変換することです。

6
Robert Harvey

良いアプローチは DAOパターン です。

エンティティごとにDAOクラスを使用して、SQL関連の機能を処理します。

1
k.liakos