ドメイン駆動設計
別名:
ドメイン駆動開発
GoFデザインパターン
など様々な知見の集積.
テスト駆動開発
を用いる.
ヘキサゴナルアーキテクチャ
が特徴的.
かつては
階層化アーキテクチャ
が推奨されていた.
実例
ドメイン
ドメイン
は最上位として外を参照しない.
インフラストラクチャ
インフラストラクチャ
は
ドメイン
を参照する.
フレームワーク
:
UI
フレームワーク
は
ドメイン
と
インフラストラクチャ
を参照し利用する.
の3要素+
テスト
の4つの
コンポーネント
から構成する.
アプリケーション
層は必要ないという立場がある.
ドメイン
Entities
:
エンティティ
データベース
の
行
に相当するものを扱う.
一意であることが要求される.
Guid
の利用など.
完全コンストラクタパターン
を積極的に利用する.
行
の中の
列
に対する
ビジネスロジック
はここに記述する.
ValueObjects
様々な
値
を
クラス
として扱うためのもの.
できるだけ早く
ValueObject
に変換して
値
に知識を吹き込むこと.
Repositories
:
Repository
基本的に
interface
で表現する.
インフラストラクチャ
の処理の定義を記述する.
外部の
テクノロジ
と接触する部分はすべてここに記述する.
Exceptions
:
例外
Exception
を
継承
した
例外
の集まり.
Helpers
static
でどこにあってもよく,害のないもの.
他の
プロジェクト
でもそのまま利用できるようなもの.
配列
を
CSV
にしてくれるやつとか.
StaticValues
メモリ
上に保持しておきたい
値
を
キャッシュ
する領域を定義する.
データベース
の
キャッシュ
など.
マスタデータ
など.
Logics
ビジネスロジック
であるが,
static
で独立したもの.
医療系の
アプリケーション
において,
血圧
や
温度
から
診断
する
ロジック
など.
どの
アプリケーション
でも共通に使えるようなものは
Helpers
に入れる.
Modules
static
でない
モジュール
.
インフラストラクチャ
利用する
テクノロジ
ごとに
名前空間
を作成する.
SQL
,
CSV
など
Fake
:
ダミーデータ
本番
と
Fake
の切り替えは
Factory
を利用する.
Factory
のみを
public
にする.
Factory
経由に限られる.
一部だけ
本番
になっていないなどの状態を回避できる.
UI
:
View
と
ViewModel
が相当.
Views
ViewModels
イベント
発動関連はすべてここにまとめる.
タイマ
など.
トランザクション
も
ViewModel
で行う.
トランザクション
は利用側が自由にできるようにするため.