設計

GRASPパターン[コントローラーパターン]

コントローラーパターン(Controller) 概要 UIレイヤーからシステム操作を最初に受け取り調整する(外部システムからの要求を受ける)オブジェクトは何かを決定するパターン 「保存」ボタンをクリックすると保存処理を行うクラスに処理を委譲する 「スペル…

GRASPパターン[疎結合性パターン]

疎結合性パターン(Low Coupling) 概要 結合性が低くなるように責任を割り当てる 「結合」とは、1つの要素が他の要素に対して、どの程度の強さで接続するか、あるいは依存するかを表す尺度 結合性が高い(密である、強いとも言う)場合 関係するクラスの変…

GRASPパターン[高凝集性パターン]

高凝集性パターン(High Cohesion) 「凝集性」(ぎょうしゅうせい)とは 一般的には 集団の中にいる人たちが、互いに魅力を感じている「程度」のこと。この程度が高いほど、仲間意識が強くなり、一致団結して行動するようになる GRASPパターンでは 要素の責…

GRASPパターン[生成者パターン]

生成者パターン(Creator) 概要 「特定のオブジェクトを生成するのは誰か」について決定する 「特定のオブジェクトを生成する責任を持つのは誰か」について決定する GRASPパターンは責任の割り当てに関するパターン 関係のないクラスにインスタンス生成を任…

GRASPパターン[情報エキスパートパターン]

情報エキスパートパターン(Information Expert) 概要 責任の遂行に必要な情報を持っているクラスに責任を割り当てる なにか処理を行うには情報が必要になる その情報を持っているクラスが自分の情報を使用して処理を行う 現実社会においてごく自然な形にな…

DI指向設計

関数クラスとデータクラスを分けること。 DIにより処理を切り替えたいのは関数クラス(ロジックを持つクラス)だが、 この関数クラスがデータ(状態)を持っていると、(そのデータの源泉がデータベースだったりして)素でnewしにくい。 従って関数クラスか…

Double Dispatchパターン

最近オブジェクト指向設計の書籍を読み出したので、自分で理解するためにちょこちょこいろいろと書くことにします。たとえば「ジャンケンする」というプログラムを組む際に、必要となる概念クラスは、「ぐー」「ちょき」「ぱー」となるわけです。で、当然こ…