4

私の理解では、オブジェクト指向デザインの基本的なテナントは、コードとデータの結合としてクラスをモデル化することに焦点を当てるべきであるということです。ただし、日々の開発では、すべてのビジネスロジックを独自のクラスに分離する傾向があります。「データ」は、基本的に実際のコードやロジックを持たない、厳密に制御されたPOCO/DTOに含まれることになります。次に、ビジネスロジッククラスをインスタンス化し、操作を実行するたびに各メソッドにPOCOを渡します。

しかし、これは2つの別々のアプローチのように感じます。実際、後者のアプローチはOOの目的と対立しているようです。

ビジネスロジックは複数のPOCOで機能する可能性があるため、私は常に2つのことを別々に保っていると思いました。さらに、 POCOのデータの検証を強制しないことで、テスト用のPOCOの準備が簡単に見えたため(内部クラスの状態やカプセル化などを気にする必要がないため)、単体テストが容易になりました。これらの理由を振り返ってみると、弱いようです。

私は2つのアプローチの比較/対比を探しています。具体的には、なぜ「ダム」POCOを作成することが最近の道であると思われるのですか?データとビジネスロジックを1つのクラスにまとめてみませんか?オブジェクト指向設計の本来の目標を放棄していますか?

ありがとう!

4

1 に答える 1

3

実際、関連するデータからビジネス ロジックを分離することは、OOP の原則に反します。これは、Martin Fowler が貧血ドメイン モデルと呼んでいるものです。個人的には、データと動作を組み合わせた適切なドメイン モデルを常に採用しています。

具体的に言うと、最近では「ばかげた」POCO を作るのが一般的だと思われるのはなぜですか?

なぜそう思ったのかはわかりませんが、これは確かに真実ではありません。そこには多くの「ばかげた」モデルがありますが、よく設計されたドメイン モデルもたくさんあります。

于 2012-09-09T07:57:06.007 に答える