基盤本部(開発部門)の木下です。Java 17 の新機能を使って、ドメイン駆動設計(Domain Driven Design: DDD)のモデリングの表現力を高める例をご紹介します。 皆さんは「事前条件が OK ならデータベースを更新する」というロジックを、クリーンアーキテクチャのどのレイヤーに実装していますか? 事前条件はドメイン知識なのでドメインサービスに実装したいところですが、リポジトリーを操作するアプリケーションサービスの中に書かれることも多いのではないでしょうか。 クリーンアーキテクチャー。https://style.biglobe.co.jp/entry/2020/02/13/150709 より引用 この記事では、ドメインサービスとアプリケーションサービスをきれいに分離するために、Java 17 で正式導入された interface の sealed と permits を活用
![Java 17の新機能でドメインモデリングの表現力を高めてみる - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」](https://cdn-ak-scissors.b.st-hatena.com/image/square/aea1acbad6d0b38f819e00178189e576863a4e05/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fb%2Fbiglobe-editor2%2F20220121%2F20220121123125.jpg)