お世話になります。初めての質問なので、もし至らない点がございましたご指摘いただけると大変助かります。
前提
5年程SEとしてJavaで金融系のシステム開発をしてきました。
最近ではSpring及びTerasoluna等のフレームワークを利用して開発をする機会も増えてきました。
その中で、どうしてもオブジェクト指向についての疑問が解決できない点があり、質問させていただきます。
疑問
今まで開発していた業務システムのほぼ全てが、ビジネスロジックとドメインオブジェクトは切り離されており、世間でいう"ドメイン貧血症"が多数見受けられました。
どう考えても"ドメインオブジェクトに状態と振る舞いを持たせる"とあるオブジェクト指向とはかけ離れていると思うのですが、これは許容されるべき事象なのでしょうか。
もしくはそもそもの考え方が間違っているのでしょうか。
※ここでいう"ドメイン貧血症"とはprivateなfieldとgetter/setterのみを持つようなドメインオブジェクトを指します
※フレームワークや共通ライブラリなどのDBと関わらない部分は除きます
捕捉情報
オブジェクト指向の重要性について新人の頃から色々な人に言われ少しずつ勉強してきました。
その中で、オブジェクト指向の基本として、”ドメインオブジェクトに状態と振る舞いを持たせる”と学びました。
しかしながら実際の業務システムでは、ビジネスロジックを束ねるサービス等があり、ドメインオブジェクトは状態のみをもつオブジェクトでしかないというのがほぼ全てでした。
一方、現状この作りで問題なく稼働しているシステムもあり、またこの問題について疑問を呈する人もいませんでした。
また、Terasolunaでは"本ガイドラインでは主に、状態のみもつモデルを扱う"と明記されており、実際サンプルもそのような作りになっております。
オブジェクト指向のSOLID原則や3大要素でも"ドメインオブジェクトに状態と振る舞いを持たせる"ことは明記されていないように見受けられ、そもそも必須な要素ではないのかとも考えています。