1.Information Expert(情報エキスパート) |
■問題:オブジェクトへの責任割り当てにおける一般原則は何か? ■解決策:責任の遂行に必要な情報を持っているクラス、すなわち「情報エキスパート」に責任を割り当てます。 ■利点:情報がカプセル化されます。クラス間の結合度が下がります。情報が複数のクラスに分散され、理解しやすく、凝集度 の高いクラスが定義されます。 ■関係のあるパターン:疎結合パターン、高凝集性パターン |
2.Creator(生産者) |
■問題:ある新しいインスタンスを生成する責任は何が持つべきか? ■解決策:以下の項目に多く当てはまるクラスに別のクラスのインスタンスを生成させる。 ・インスタンス生成したいクラスを集約している。 ・インスタンス生成したいクラスを記録する。 ・インスタンス生成したいクラスを使用する。 ・インスタンス生成したいクラスの初期化データ(例えばコンストラクタの引数に渡すデータ)を持っている。 ■利点:クラス間の結合度 が下がります。 ■関係のあるパターン:疎結合性 |
3.Controller(コントローラ) |
■問題:UIレイヤからシステム操作を最初に受け取り調整するオブジェクトは何か? ■解決策:以下のどれかに該当するクラスに責任を割り当てます。 ・主要なサブシステムを表すクラス ・システムイベントが起きるユースケースシナリオ表すクラス ■利点:再利用性が向上します。ユースケースの状態を判断する機会が得られます。 |
4.Low Coupling(疎結合) |
■問題:クラス間の依存性を弱め、変更による影響を小さくし、再利用性を高めるにはどうすればよいか? ■解決策:結合度が低くなるように責任を割り当てます。複数の選択肢を評価する場合にもこの原則を用います。 ■利点:クラスが他のクラスの修正に影響されなくなります。クラスが理解しやすくなります。クラスが再利用しやすくなります。 ■関係のあるパターン:バリエーション防護壁パターン |
5.High Cohesion(高凝集性) |
■問題:オブジェクトの焦点を明確にし、わかりやすく、管理しやすく、さらにクラス間の結合度を下げるにはどうすればよいか? ■解決策:凝集度 が高くなるように責任を割り当てます。 ■利点:設計の明確さと理解しやすさが高まります。保守と拡張が容易になります。クラス間の結合度 が下がります。 |
6.Polymorphism(多態性) |
■問題:クラスによって変化する選択肢をどのように処理すればよいか? ■解決策:異なるクラスに同じ名前の操作を作成し、振る舞いを変化させるクラスにその振る舞いに責任を割り当てます。 ■利点:新しくバリエーション(選択肢)が増えたとき、拡張が容易に行えます。 ■関係のあるパターン:バリエーション保護壁パターン。GoFのデザインパターン に関連するパターンがたくさんあります。 |
7.Pure Fabrication(人工品) |
■問題:凝集度を高く、結合度を下げるにはどうすればよいか(他のパターンでは駄目なとき) ■解決策:問題領域の概念をいっさい表現しない便宜上のクラスを作成します ■利点:クラスの凝集度 が上がります。クラスの再利用が高まります。 ■関係のあるパターン:疎結合性パターン、高凝集性パターン |
8.Indirection(間接化) |
■問題:クラス間が直接的に結合しないようにするには何に責任を持たせるべきか? ■解決策:他のクラス間に介在する媒介オブジェクトに責任を割り当て、クラス間が直接的に結合しないようにします。 ■利点:結合度が下がります。 ■関係のあるパターン:バリエーション保護壁パターン、疎結合性パターン、人工品パターン。GoFのデザインパターン に関連するパターンがたくさんあります。 |
9.Protected Variations(バリエーション防護壁) |
■問題:オブジェクト、サブシステム、システムの要素におけるバリエーションや不安定性が、他のクラスに影響しないようにするにはどうすればよいか? ■解決策:予測されるバリエーション、不安定性との接点を識別して、その周囲に安定したインタフェースを作成する ■利点:新しくバリエーションが増えたとき、拡張が容易に行えます。結合度 を下げられます。 ■関係のあるパターン:GoFのデザインパターン に関連するパターンがたくさんあります。 |
番号 |
リンク先の名称 |
リンク先の説明 |
リンクした日 |
1 | 【中級】基礎からのオブジェクト指向 第5部 「GRASPパターン」を理解する(前編):ITpro | GRASPパターンについての説明と、凝集度、結合度についての説明があります。 | 2008/3/21 |
2 | 634 - GRASPパターン | 9つあるGRASPパターンの詳細が載っています。 | 2008/3/21 |
3 | @IT:連載:.NETで始めるデザインパターン 第2回 うまくデザインパターンを使うための心得 | GRASPパターンについての説明と、凝集度、結合度についての説明があります。 | 2008/3/21 |
4 | 設計におけるオブジェクトの責務分配に有効なものさし -凝集度と結合度- | GRASPパターンについての説明と、凝集度、結合度についての説明があります。 | 2008/3/21 |
5 | GRASP (Object Oriented Design) - Wikipedia, the free encyclopedia | GRASPパターンについて説明していると思われるページ。英語なのでよくわからない。 | 2008/3/21 |
番号 |
著者名 |
書籍名 |
ISBN |
1 | クレーグ・ラーマン著、依田 光江訳 | 実践UML 第3版 オブジェクト指向分析設計と反復型開発入門 | 978-4-89471-682-7 |