BETA

ドメイン駆動設計にチャレンジ(仕様パターンでなく・・・)

投稿日:2019-08-25
最終更新:2019-08-29

情報処理技術者試験(DB)の2019年4月の問1をお題としたドメイン駆動設計チャレンジです。
前回の続きからです。ほんとはリポジトリに進む予定だったのですが・・・

ドメインのモデルで業務ルールを表してみる

専門家:エントリサービスも、エンティティ、値オブジェクト、サービス、ファクトリと、大体形になってきましたね。
開発者:そうですね、あとは、エントリ枠を作るにしても、参加希望者が参加申し込みするにしても、参あ加者を確定するにしても、それなりのルールがあると思うので、今日はその点を整理することにしましょう。
専門家:そうですね。どこから始めましょうか・・・うーんエントリ枠を作るときのルールからにしましょうか。
開発者:お願いします。
専門家:エントリ枠のエンティティはこんな感じでしたよね。周辺に値オブジェクトがあって・・・

開発者:そうですね。じゃあ定員とかどうです?定員数は決まってるとか。
専門家:そうですね、エントリ枠ごとに定員は違いますが、0人とかないです。最低5人からですね。
開発者:なるほど、では・・・
専門家:最大で100人までですね
開発者:では、そこらへんのルールも・・・
専門家:今の所は!
開発者:後から変わる可能性もあるわけですね。では、そこらへんのルールを表すものが必要そうですね。
専門家:「定員」の中にルールを入れてしまっても良さそうですけど、今回はルール、まあ、定員の仕様を・・・
開発者:はい、定員の「仕様」を表してみます。

開発者:定員数の仕様に最小の定員数と最大の定員数を持たせて、定員を生成する時に定員数の仕様を使って検証することにしましょう。
専門家:検証仕様はインターフェースにしたのですね?
開発者:はい、他にも検証するところがあるかと思うので、「仕様を満たしているか?」というAPIで統一しようかなと思います。
専門家:いいですね!続けて参加費用は無料ということもありますが、最大で10000円になります。これも同じように検証仕様を実装して、参加費用から使うようにするわけですね。
開発者:そうですね。こんな感じで。

専門家:募集期間もこんな感じ・・・おっと、募集期間については、エントリ枠を作る時に、作成する日が参加募集終了日を過ぎていたらまずいですね。
開発者:おおっと!では、「作成日」という概念が出てきましたね!
専門家:そうですね。作成日も値オブジェクトとして表しましょう!
開発者:こんな感じですね!

専門家:他にもエントリ枠の抽選の時とか、抽選年月日の当日だったら抽選できるとか、すでに申し込んでいるのに参加申し込みしようとしたとか、大会の中で他のエントリに申し込み済みとかありますが、これらもこんな感じで検証仕様を満たしているかどうかを確認するようにするのですね!
開発者:はい、そうなります。抽選の時とかも、「当日」という概念が出てきましたね。
専門家:お、そうですね!整理していくことで色々出てきますね!
開発者:では・・・

・・・話はつきなさそうですが、今回は仕様についてでした。「仕様パターン」といってCompositeパターンみたいなパターンもあるようです。が、仕様を表す、というところで留めておきます。

次はリポジトリ、にしようかと思ったのですが、そろそろ実装していこうかな?と思います。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

yodai_u_uの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!