- 業務アプリケーション分野のドメインオブジェクトの設計パターンを提供する
- 型(値の種類)の設計スキルを向上するための学習教材や設計のヒントとして提供する
- そのまま再利用するための汎用的な部品は提供しない
- 基本レベルとして、金額・数量・率・日付など、業務で関心のある値の計算・判断を扱う値オブジェクトの設計パターンを提供する
- 応用レベルとして、値オブジェクトを組み合わせた複合オブジェクトの設計パターンを提供する
wikiページ https://github.com/masuda220/business-logic-patterns/wiki
- 標準APIの BigDecimalや、LocalDateは汎用的で使いにくい
- 有効な値の範囲が広すぎる
- 余計なメソッドが多い
- 余計なオプション指定(引数)が多い
- 足りないメソッドが多い
- その他の公開されているライブラリも同じ
- 特定の文脈で、特定の用途に使いやすい、値を扱うクラスのシンプルな設計パターンを揃えたい
- 具体的で限定的な用途を想定して、汎用ライブラリの設計を思い切って単純化する
現在の対象範囲は、以下の通り
領域 | 説明 | 実装 |
---|---|---|
数量と単位 | 数量計算や、単位換算 | Quantity, Unit |
金額 | 金額計算、税、割引。いったんは、円に限定 | Amount, DailyPayroll |
日付 | 日付計算、日数計算 | Days |
識別番号/識別名 | 一致不一致の判定 | |
範囲 | from-toを扱うクラス、そのコレクション | AmountRange, DateRange |
位置 | 位置の表現、距離計算、場所の判定 | |
分類 | クラシフィケーション、カテゴライズ、グルーピング | |
残高 | 履歴と残高の計算 | |
状態遷移 | 状態遷移ルールの表現と演算 | State |
進捗 | 進捗状態(ビジネスマイルストーン)の表現と演算 |