/note/tech

5パターンのクラスの設計パターン

クラスの分類

①ドメインオブジェクト(計算判断ロジックの実装)

②アプリケーションクラス(通知・記録・計算判断の実行)

③永続化クライアント(記録・参照の実装)

④通信クライアント(通知の実装)

⑤コントローラ(外部からイベントを受け取りアプリケーションクラスのメソッドを呼び出す)

@masuda220

この5分類でクラスの設計パターンが異なる。

永続化や通信のクライアントとコントローラは、フレームワークなどを使って設計を簡略化できる。だいたいのパターンは決まっている。

クラス設計が難しいのはドメインオブジェクトとアプリケーションクラス。事業活動の複雑さがそのまま影響する。

@masuda220

ドメインオブジェクトも基本パターンは、

・値オブジェクト(金額・数量・日付など)

・範囲オブジェクト(値の始点と終点)

・区分値(振る舞いを持つ列挙型)

・コレクションオブジェクト

・それらを組み合わせた複合オブジェクト

くらい。

どんな値をクラスにし、どう組み合わせるかの判断が難しい

@masuda220

アプリケーションクラスは、さまざまな関心事が混在しやすい。

たとえば、注文処理のアプリケーションクラスは商流・物流・金流の関心事が混在している。

記録すべき情報や通知先も関心事が混在する。

こらの関心事を別のクラスに分けて記述し、それらを使って全体の流れを組み立てるクラスを設計する

@masuda220

永続化のインタフェース宣言と実装、通信のインタフェース宣言と実装もアプリケーションクラスの関心事の分け方に合わせて分解する。

どこかで組み立てる必要があるが、それを実装クラスが受け持つか、アプリケーションクラスで受け持つかは、実際に書いてみて、どちらがよりわかりやすいかを実験する

@masuda220