私はuser
オブジェクトの例を取るつもりです。Web MVC:Modelレイヤーを構造化する方法は?
私はuser
というオブジェクトを持っていますが、これには様々なクラス変数(擬似、電子メールなど)が含まれています。 )ゲッターやセッター、そしておそらくdbを扱わない関数があります。
私はDAO
クラスを持っています。このクラスは、さまざまなMySQL/PDOクエリ(レコードの作成、更新、取得情報の作成など)を通じてデータベースを直接扱うオブジェクトです。
user
オブジェクトにDAO
オブジェクトと直接対話させない理由はありますか?言い換えれば、Controller
が、user
インスタンスに関連するデータベースクエリを(例えば、登録プロセス中に)要求する場合、user
内の関数を呼び出すだけで、それ自体がDAO
の関数を呼び出すか、 ?
コントローラーが第3クラスを呼び出してDAOと通信し、user
インスタンスをargとして渡す例があります。代わりに、user
インスタンスを作成し、DAO
を扱うことで、この3番目のレイヤーが担当することもあります。 DAO
を処理するために使用されたすべての関数は、user
オブジェクト内に存在する可能性があります。私は何が欠けていますか?
-1:そのコードのどれもコントローラ内に配置されていません。プレゼンテーション層にドメインビジネスロジックがあります。 'User'' classはカプセル化や振舞いを提供しません。 –
ああ.. 'UsersDAO'のあなたのコード例は、実際にはDAOではないデータマッパーです(http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html)。 DAOはストレージと直接対話しません。 –
@tereško解決策を回答として投稿してください。また、プレゼンテーションレイヤーの例を投稿していないときに、プレゼンテーションレイヤーにドメインビジネスロジックがあるとはどういうことがわかりません。 –