GRASP(General Responsibility Assignment Software Pattern)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>なんとか原則]]
*目次 [#r4f56dfd]
#contents
*概要 [#y78ef2fe]
-Craig Larmanが著書「実践UML」で示した。
-オブジェクト指向設計において用いられる、
-クラスやオブジェクトに責務を割り当てる方針を導くパターン...
*詳細 [#e8d6cd59]
**情報エキスパート (Information Expert) [#xa39c761]
必要な情報を全て持っているクラスに責務を割り当てるべきと...
**生成者 (Creator) [#d4f553b5]
-A を密接に使用するクラス B がクラス A の作成に責任を持つ...
-Factoryオブジェクトを作ってオブジェクトの作成を行わせる...
**コントローラ(Controller) [#ucd6a6e5]
-システム全体や、ユースケース・シナリオを表現する~
(、UIでない)、クラスにシステムイベントを扱う責務を割り...
-UI層以上にあって、システムに対する~
操作を受け取り調整する(制御する)最初のオブジェクト。
**疎結合 (Low Coupling) [#ya3ed31e]
以下を実現するための責務の割り当て方法を決定付けるための...
-クラス間の依存を小さくする
-他のクラスの変更の影響を小さくする
-再利用の可能性を高める
**高凝集性 (High Cohesion) [#p3867419]
オブジェクトが適切に責務を集中させ、管理・理解が可能な状...
-高凝集性とは、
--ある要素の責務が強く関連しており、またその要素に集中し...
--モジュール設計自体はシステムの凝集性を高める活動の例と...
-低凝集性とは、
--関連のない責務を持ちすぎている場合である。
--理解が難しく、再利用・維持管理が困難で、変更も行いづら...
**多態性 (Polymorphism) [#f1299cd2]
-ポリモルフィックな操作を持たせることで実現できる。
-ポリモルフィックな操作は以下で実現できる。
--アドホック多相(Ad hoc polymorphism)
>≒オーバーロード
--パラメータ多相(Parametric polymorphism)
>≒テンプレート・ライブラリや、ジェネリックなど。
--部分型付け(Subtyping)~
部分型多相(subtype polymorphism)~
包含多相(inclusion polymorphism)~
>オブジェクト指向言語のポリモーフィズム。
**純粋人工物 (Pure Fabrication) [#k4fe3e69]
-問題領域に登場する概念を表すクラスではなく、~
疎結合や、高凝集性、それらから得られる再利用可能性を~
実現するために作られるクラス(情報エキスパートで実現でき...
-[[ドメイン駆動設計>クリーン・アーキテクチャ]]ではサービ...
明確な定義が見つからなかったが以下のように書かれている。
--リポジトリ → データ源の切り替え、~
ファクトリー → 処理の切り替え、~
サービス → その他諸々をぶち込む。
--完全に振る舞いそのものであり、~
無理やりオブジェクトにしたもの。
**間接化 (Indirection) [#x18e6ae2]
-二つの要素の中間にオブジェクトを設け~
両者の仲介を行う責務を割り当てることで、~
二つの要素間の疎結合性(および再利用の可能性)を促進する。
-Model View Controllerにおいて
--コントローラが
--データ(モデル)と
--表現(ビュー)の
>仲介を行うのはその一例。
**変動からの保護 (Protected Variations) [#g14f7f20]
-周辺の要素(オブジェクト、システム、サブシステム)の
--変動から注目する要素を保護するために、
--不安定な部分をインタフェースを用いて収束させ、
--ポリモーフィズムを用いてインターフェイスを実装させる。
>↓↓↓
--安定したインターフェースを作成して、
--結合オブジェクトの変動から保護する。
-要するに~
大幅な設計変更が合っても、~
安定したインターフェース部分に~
変更が及ばないようにする。
*参考 [#ca8cb965]
-GRASP - Wikipedia~
https://ja.wikipedia.org/wiki/GRASP
**[[SOLID(SRP, OCP, LSP, ISP, DIP)]] [#c9575abb]
**マイクロソフト系技術情報 Wiki [#fd38099b]
***[[デザイン・パターン>https://techinfoofmicrosofttech.o...
***[[IoC>https://techinfoofmicrosofttech.osscons.jp/index...
***[[DI>https://techinfoofmicrosofttech.osscons.jp/index....
***[[IoC、AOP → DI → 依存性反転原則>https://techinfoofmic...
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>なんとか原則]]
*目次 [#r4f56dfd]
#contents
*概要 [#y78ef2fe]
-Craig Larmanが著書「実践UML」で示した。
-オブジェクト指向設計において用いられる、
-クラスやオブジェクトに責務を割り当てる方針を導くパターン...
*詳細 [#e8d6cd59]
**情報エキスパート (Information Expert) [#xa39c761]
必要な情報を全て持っているクラスに責務を割り当てるべきと...
**生成者 (Creator) [#d4f553b5]
-A を密接に使用するクラス B がクラス A の作成に責任を持つ...
-Factoryオブジェクトを作ってオブジェクトの作成を行わせる...
**コントローラ(Controller) [#ucd6a6e5]
-システム全体や、ユースケース・シナリオを表現する~
(、UIでない)、クラスにシステムイベントを扱う責務を割り...
-UI層以上にあって、システムに対する~
操作を受け取り調整する(制御する)最初のオブジェクト。
**疎結合 (Low Coupling) [#ya3ed31e]
以下を実現するための責務の割り当て方法を決定付けるための...
-クラス間の依存を小さくする
-他のクラスの変更の影響を小さくする
-再利用の可能性を高める
**高凝集性 (High Cohesion) [#p3867419]
オブジェクトが適切に責務を集中させ、管理・理解が可能な状...
-高凝集性とは、
--ある要素の責務が強く関連しており、またその要素に集中し...
--モジュール設計自体はシステムの凝集性を高める活動の例と...
-低凝集性とは、
--関連のない責務を持ちすぎている場合である。
--理解が難しく、再利用・維持管理が困難で、変更も行いづら...
**多態性 (Polymorphism) [#f1299cd2]
-ポリモルフィックな操作を持たせることで実現できる。
-ポリモルフィックな操作は以下で実現できる。
--アドホック多相(Ad hoc polymorphism)
>≒オーバーロード
--パラメータ多相(Parametric polymorphism)
>≒テンプレート・ライブラリや、ジェネリックなど。
--部分型付け(Subtyping)~
部分型多相(subtype polymorphism)~
包含多相(inclusion polymorphism)~
>オブジェクト指向言語のポリモーフィズム。
**純粋人工物 (Pure Fabrication) [#k4fe3e69]
-問題領域に登場する概念を表すクラスではなく、~
疎結合や、高凝集性、それらから得られる再利用可能性を~
実現するために作られるクラス(情報エキスパートで実現でき...
-[[ドメイン駆動設計>クリーン・アーキテクチャ]]ではサービ...
明確な定義が見つからなかったが以下のように書かれている。
--リポジトリ → データ源の切り替え、~
ファクトリー → 処理の切り替え、~
サービス → その他諸々をぶち込む。
--完全に振る舞いそのものであり、~
無理やりオブジェクトにしたもの。
**間接化 (Indirection) [#x18e6ae2]
-二つの要素の中間にオブジェクトを設け~
両者の仲介を行う責務を割り当てることで、~
二つの要素間の疎結合性(および再利用の可能性)を促進する。
-Model View Controllerにおいて
--コントローラが
--データ(モデル)と
--表現(ビュー)の
>仲介を行うのはその一例。
**変動からの保護 (Protected Variations) [#g14f7f20]
-周辺の要素(オブジェクト、システム、サブシステム)の
--変動から注目する要素を保護するために、
--不安定な部分をインタフェースを用いて収束させ、
--ポリモーフィズムを用いてインターフェイスを実装させる。
>↓↓↓
--安定したインターフェースを作成して、
--結合オブジェクトの変動から保護する。
-要するに~
大幅な設計変更が合っても、~
安定したインターフェース部分に~
変更が及ばないようにする。
*参考 [#ca8cb965]
-GRASP - Wikipedia~
https://ja.wikipedia.org/wiki/GRASP
**[[SOLID(SRP, OCP, LSP, ISP, DIP)]] [#c9575abb]
**マイクロソフト系技術情報 Wiki [#fd38099b]
***[[デザイン・パターン>https://techinfoofmicrosofttech.o...
***[[IoC>https://techinfoofmicrosofttech.osscons.jp/index...
***[[DI>https://techinfoofmicrosofttech.osscons.jp/index....
***[[IoC、AOP → DI → 依存性反転原則>https://techinfoofmic...
ページ名: