基本的なセッターとゲッター以外の機能を DTO に入れることは適切ですか?
2 に答える
まあ、多くのシナリオでは、いくつかのシリアライゼーション コードが必要になる可能性があります (シリアライザー API が要求するシリアライゼーション インターフェイス - .NET のIXmlSerializable
/などISerializable
) ですが、それはあなたが意味するものではないと思います...
それは本当にシナリオに依存します。ドメインモデルをシリアル化に使用できるほど単純なオブジェクトモデルがある場合、小さなプロジェクトでは、それを分割してもほとんどメリットがない可能性があります-関心の分離の問題ですか? おそらく。長期的な痛みを引き起こすつもりですか?おそらくそうではありません (少なくとも、契約ベースのシリアライザーを使用している場合はそうではないため、誰にも気づかれずに交換できます)。
より複雑なモデルの場合、ドメイン モデルとは別の DTO モデルが必要になることがよくあります。その場合、ドメインと DTO の間に変換ロジック (メソッド/演算子など) を配置する場所が必要になる場合があります。別個の DTOを持っている場合、多くの追加ロジックがある可能性は低く、そのロジックは主にドメイン モデルと他のビジネス クラスに属します。
定義上、DTO にはデータ アクセサー以外の動作はありません。それらに何らかのロジックが必要な場合は、モデルのリファクタリングが必要になる可能性があります。