オブジェクト指向の勉強をしていたら、「ドメインモデル貧血症」という聞き慣れない用語が出てきたので、ちょっと調べてみた。
これは、どういうクラス(モデル)かというと、フィールド変数とその getter や setter くらいしかメソッドを持たないもので、オブジェクト指向的には良くないとされる。
なぜ良くないかというと、オブジェクト指向的には、データ(フィールド変数)とそれについての操作(メソッド)は同じクラス内にあるべきであり、ドメインモデル貧血症はそうなっていないからである。
そうなっていないと、どういう実害があるかというと、例えば、そのクラスのデータを加工する必要がある場合、クラスを使う側のソース(クライアント側)に加工処理を書く必要があり、その箇所がたくさんあると同じような処理がいろんな箇所に書かれることになってしまう。
ちなみに、上述ようなクラスが必ずダメかというと、そういうわけではなく、例えば DTO (Data Transfer Object) などのように、データを格納することだけを目的としたオブジェクトの場合は問題ない。
オブジェクト指向プログラミングをしていて、どのクラスに処理(メソッド)を持たせるのか迷ったら、この考えを思い出してみたいと思う。
以下も参考にさせて頂きました。