GoF
martinfowler.com Mapper How It Works When to Use It Mapper An object that sets up a communication between two independent objects. 2つのサブシステムをつなぐ 疎結合に保ちたい 変更できないから 変更できるにしても、依存させたくないから Mapper …
変化するものをカプセル化する 引数としてのオブジェクト 一元管理か分散か リクエストの送信/受信の疎結合化 併用 振る舞いのパターン同士 振る舞いのパターンと他の 英語 変化するものをカプセル化する ここでは「カプセル化する」 = 「同じインターフェー…
ねらい モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと Visitをオーバーロードする ダブルディスパッチ オブジェクト構造の走査は誰が行う? 関連するパターン 英語 ねらい あるクラス群(Element…
ねらい つかいどころ 登場人物 結果 実装にあたり考えるべきこと 関連するパターン ねらい アルゴリズムの骨組みを基底クラスで定義 実装を派生クラスにゆだねる つかいどころ クラスを派生してカスタマイズしたい カスタマイズしても変わらない骨組みを共通…
ねらい AKA つかいどころ 構造 オブジェクトの集約版 ジェネリクス版 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン 英語 ねらい アルゴリズムをカプセル化し、他のアルゴリズムと可換にする アルゴリズム利用側…
ねらい AKA つかいどころ 構造 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 誰が状態遷移を定義するか テーブルにより遷移を表現する方法 stateオブジェクトの生成・解体のポリシー 動的継承 関連するパターン 英語 ねらい 状態…
ねらい AKA モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン 英語 ねらい 1対多のオブジェクト依存関係において、1のオブジェクトの状態の変更を、多のオブジェクトすべてに自動で通…
ねらい AKA モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン ねらい カプセル化を違反することなく、オブジェクトの内部状態を外部に書き出し、後で再度読み込む AKA Token モチベー…
ねらい モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン ねらい オブジェクトの相互作用をカプセル化するためのオブジェクトを定義する オブジェクトどうしを疎結合にする モチ…
ねらい AKA モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 実装にあたり考えるべきこと Iteratorの分類 -- External/Internal TODO 走査アルゴリズムをどのクラスに定義するか どれだけ堅牢にするか 走査のメソッドの追加 Iterat…
ねらい モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと Compositeとどうちがうの 関連するパターン よくわかんなかったやつ ねらい 言語の文法をクラスの木構造で表現する 抽象構文木(AST: Abstract S…
ねらい AKA モチベーション つかいどころ 登場人物 【補】具体例 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン ねらい リクエストをオブジェクトとしてカプセル化 クライアントを異なるリクエストでパラメタライズできる…
ねらい モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン ねらい リクエストの送信者と受信者との密結合をほぐす 1つ以上のオブジェクトにリクエストの処理の機会を与える モチベーシ…
構造のパターンの類似性 AdapterとBridge 共通点 相違点 AdapterとFacade CompositeとDecorator 共通点 相違点 併用 DecoratorとProxy 共通点 相違点 英語 構造のパターンの類似性 登場人物と、クライアントコードからの利用が類似している が、ねらいが全然…
ねらい AKA モチベーション つかいどころ Remote Proxy Virtual Proxy Protection Proxy Smart Reference 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 言語の機能を使うと幸せになれることも 演算子オーバーロード マジックメソ…
ねらい モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン 英語 ねらい 小さなオブジェクトを大量に利用する際、オブジェクトを共用することで空間を節約する モチベーション クラスの…
ねらい モチベーション つかいどころ 登場人物 結果 実装にあたり考えるべきこと 【補強】用例 関連するパターン 英語 ねらい 複数クラスからなるサブシステムに窓口を設け、簡単に使えるようにする モチベーション システムをサブシステムに小分けにするこ…
ねらい AKA モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 功罪 功 罪 実装にあたり考えるべきこと Strategyパターンとの対比 関連するパターン 英語 ねらい オブジェクトに責務を動的に追加する AKA Wrapper AdapterもWrapperで…
ねらい モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン 英語 ねらい オブジェクトを木構造にし、木全体も部分木も葉も一様に扱えるようにする モチベーション 例えばお絵かきソフト …
ねらい 別名 モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン 英語 ねらい 種類に関する継承ツリー(Abstraction)と実装に関する継承ツリー(Implementor)を分離する 種類に関する…
ねらい 別名 モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 功罪 継承方式と集約方式とのトレードオフ ほか、考えるべきこと 実装 他のStructural Patternとの対比 英語 ねらい 既存クラスのインタフェースを変える 別名 Wrapper…
生成のパターンの分類 継承 集約 比較検討 -- シンプルなオブジェクトを生成する場合 Factory Method AbstractFactory Prototype 選択 生成のパターンの分類 2つに大別 継承 Factory Method 集約 Abstract Factory Builder Prototype 比較検討 -- シンプルな…
まとめ モチベーション つかいどころ 功罪 実装面 用例 関連するパターン まとめ クラスから生成されるオブジェクトを1つに絞る モチベーション オブジェクトがただ1つであることが重要なケースがある 例 ファイルシステム ウィンドウ 「ただ一つのオブジェ…
まとめ モチベーション 登場人物 つかいどころ 功罪 実装 関連するパターン まとめ newとかするのではなく、作り置きしたオブジェクトをClone()する モチベーション AbstractFactoryやFactoryMethodを導入すると、 AbstractFactoryやCreatorのサブクラスを大…
まとめ オブジェクトを生成・返却するメソッドのインタフェースを定義する 実際にどのクラスを生成するかはサブクラスの実装|overrideに委ねる 別名 Virtual Constructor モチベーション 世の中のプログラムフレームワークは抽象クラスを扱う フレームワーク…
モチベーション 登場人物 全体像 クライアントコードからの利用 功罪 実装面で考えるべきこと Builderクラスの構築処理のインタフェース Productは汎化しない 基底のBuilderのメソッドは空の処理 用例 関連するパターン BuilderとAbstarctFactoryとのちがい …
まとめ 別名 登場人物 全体像 つかいどころ 功罪 実装面 Singleton ふつうの実装 Familyが多い場合・Family間の差分が少ない場合の実装 Productが増えても大変にならない実装 型安全 関連するパターン まとめ 一式のオブジェクト群を生成するクラス 関連があ…
Chapter 2 A CASE STUDY:DESIGNING A DOCUMENT EDITOR ドキュメントエディタ「Lexi」を題材に、 さまざまな設計上の困難と それを克服するために使用されているデザインパターン を紐解いていく Chapter 2 A CASE STUDY:DESIGNING A DOCUMENT EDITOR 2.2 Doc…