Open im-kashi opened 8 years ago
生成される具象クラスではなく、要求されるクラスに応じて抽象化される。
Factory
は抽象型を返し、その具象についてクライアントは知るべきではない(依存すべきではない)という事。
生成物は不変条件を満たす事。 → オブジェクトの変遷を認めると不変条件が満たされないケースが出てくる。この場合は不変条件が満たされなくても良い?それともそもそもその不変条件が適切ではない?
生成されるドメインオブジェクト(Entity
, Value Object
等)は、生成時・変遷時共に不変条件を満たしているべき。
不変条件が満たされないオブジェクトは、ドメインオブジェクトではない。
抽象型を引数に取る。
引数の具象型に依存させない為。
生成物が Aggregate なら Factory に置いた方が良い。
反対意見。Aggregate
は一般的に変遷するが、不変性は常に強制されるべきなので、Factory
ではなく Aggregate
(生成物)側に不変条件を置く方が良い。
Value Object に Factory は必要?
Value Object
はシンプルである事が求められているので、Factory
は要らないよね。
他にあった議論を覚えていましたら、記載をお願いします。
Factory
は、内部の複雑なルールを満たしたオブジェクトを生成する事で、処理をカプセル化する。Aggregate
をひとまとまりとして生成し、その不変条件を強制する。Factory
(ファクトリメソッド)の要件Aggregate
内部のオブジェクトを生成する際は、root entity。Aggregate
)オブジェクト。 e.g. 生成物 "取引注文" に対する "証券取引口座" のファクトリメソッド※
Aggregate
は原則Factory
で組み立てる。Factory
の設計ポイントFactory
か 生成物か。Aggregate
ならFactory
に置いた方が良い。Value Object
の不変条件は生成時にのみ適用されれば十分なので、Factory
側に置く方が理に適う。Value Object
にFactory
は必要?