2

ドメイン オブジェクト (たとえば、Person) が与えられた場合、そのオブジェクトにはデータ マッパー (Person_Mapper) が含まれている必要がありますか?

たとえば、次の 2 つの異なる方法で非アクティブ化アクションを機能させることができます。

$mapper = new Person_Mapper();

$person = $mapper->load(1);

$person->active = false;
$mapper->save($person);

またはこのように:

$mapper = new Person_Mapper();

$person = $mapper->load(1);

$person->inactivate();


class Person
{
    public function inactivate()
    {
            $this->active = false;
            $this->_mapper->save($this);
    }
}
4

2 に答える 2

5

Person クラスは Person のことだけを知っている必要があるため、データ マッピングに関係するものを含めるべきではありません。

http://en.wikipedia.org/wiki/Single_responsibility_principleを参照してください

于 2009-01-21T22:21:22.250 に答える
1

DAOパターンとデータマッパーパターンの関係については少しわかりませんが、DAOを使用すると、Personオブジェクトは非アクティブフィールドがtrueに設定された転送オブジェクトを返し、それをPersonDAOに返して処理します。の。人物オブジェクトは、永続性からまったく知る必要がありません。

于 2009-01-29T15:49:16.407 に答える