勉強日記

チラ裏

GoF

PoEAA ch18 Mapper

martinfowler.com Mapper How It Works When to Use It Mapper An object that sets up a communication between two independent objects. 2つのサブシステムをつなぐ 疎結合に保ちたい 変更できないから 変更できるにしても、依存させたくないから Mapper …

GoF本 Discussion of Behavioral Patterns

変化するものをカプセル化する 引数としてのオブジェクト 一元管理か分散か リクエストの送信/受信の疎結合化 併用 振る舞いのパターン同士 振る舞いのパターンと他の 英語 変化するものをカプセル化する ここでは「カプセル化する」 = 「同じインターフェー…

GoF本 Visitor

ねらい モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと Visitをオーバーロードする ダブルディスパッチ オブジェクト構造の走査は誰が行う? 関連するパターン 英語 ねらい あるクラス群(Element…

GoF本 Template Method

ねらい つかいどころ 登場人物 結果 実装にあたり考えるべきこと 関連するパターン ねらい アルゴリズムの骨組みを基底クラスで定義 実装を派生クラスにゆだねる つかいどころ クラスを派生してカスタマイズしたい カスタマイズしても変わらない骨組みを共通…

GoF本 Strategy

ねらい AKA つかいどころ 構造 オブジェクトの集約版 ジェネリクス版 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン 英語 ねらい アルゴリズムをカプセル化し、他のアルゴリズムと可換にする アルゴリズム利用側…

GoF本 State

ねらい AKA つかいどころ 構造 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 誰が状態遷移を定義するか テーブルにより遷移を表現する方法 stateオブジェクトの生成・解体のポリシー 動的継承 関連するパターン 英語 ねらい 状態…

GoF本 Observer

ねらい AKA モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン 英語 ねらい 1対多のオブジェクト依存関係において、1のオブジェクトの状態の変更を、多のオブジェクトすべてに自動で通…

GoF本 Memento

ねらい AKA モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン ねらい カプセル化を違反することなく、オブジェクトの内部状態を外部に書き出し、後で再度読み込む AKA Token モチベー…

GoF本 Mediator

ねらい モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン ねらい オブジェクトの相互作用をカプセル化するためのオブジェクトを定義する オブジェクトどうしを疎結合にする モチ…

GoF本 Iterator

ねらい AKA モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 実装にあたり考えるべきこと Iteratorの分類 -- External/Internal TODO 走査アルゴリズムをどのクラスに定義するか どれだけ堅牢にするか 走査のメソッドの追加 Iterat…

GoF本 Interpreter

ねらい モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと Compositeとどうちがうの 関連するパターン よくわかんなかったやつ ねらい 言語の文法をクラスの木構造で表現する 抽象構文木(AST: Abstract S…

GoF本 Command

ねらい AKA モチベーション つかいどころ 登場人物 【補】具体例 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン ねらい リクエストをオブジェクトとしてカプセル化 クライアントを異なるリクエストでパラメタライズできる…

GoF本 Chain of Responsibility

ねらい モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン ねらい リクエストの送信者と受信者との密結合をほぐす 1つ以上のオブジェクトにリクエストの処理の機会を与える モチベーシ…

GoF本 Discussions of Structural Patterns

構造のパターンの類似性 AdapterとBridge 共通点 相違点 AdapterとFacade CompositeとDecorator 共通点 相違点 併用 DecoratorとProxy 共通点 相違点 英語 構造のパターンの類似性 登場人物と、クライアントコードからの利用が類似している が、ねらいが全然…

GoF本 Proxy

ねらい AKA モチベーション つかいどころ Remote Proxy Virtual Proxy Protection Proxy Smart Reference 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 言語の機能を使うと幸せになれることも 演算子オーバーロード マジックメソ…

GoF本 Flyweight

ねらい モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン 英語 ねらい 小さなオブジェクトを大量に利用する際、オブジェクトを共用することで空間を節約する モチベーション クラスの…

GoF本 Facade

ねらい モチベーション つかいどころ 登場人物 結果 実装にあたり考えるべきこと 【補強】用例 関連するパターン 英語 ねらい 複数クラスからなるサブシステムに窓口を設け、簡単に使えるようにする モチベーション システムをサブシステムに小分けにするこ…

GoF本 Decorator

ねらい AKA モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 功罪 功 罪 実装にあたり考えるべきこと Strategyパターンとの対比 関連するパターン 英語 ねらい オブジェクトに責務を動的に追加する AKA Wrapper AdapterもWrapperで…

GoF本 Composite

ねらい モチベーション つかいどころ 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン 英語 ねらい オブジェクトを木構造にし、木全体も部分木も葉も一様に扱えるようにする モチベーション 例えばお絵かきソフト …

GoF本 Bridge

ねらい 別名 モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 結果 実装にあたり考えるべきこと 関連するパターン 英語 ねらい 種類に関する継承ツリー(Abstraction)と実装に関する継承ツリー(Implementor)を分離する 種類に関する…

GoF本 Adapter

ねらい 別名 モチベーション つかいどころ 構造 登場人物 クライアントコードからの利用 功罪 継承方式と集約方式とのトレードオフ ほか、考えるべきこと 実装 他のStructural Patternとの対比 英語 ねらい 既存クラスのインタフェースを変える 別名 Wrapper…

GoF本 Discussion of Creational Patterns

生成のパターンの分類 継承 集約 比較検討 -- シンプルなオブジェクトを生成する場合 Factory Method AbstractFactory Prototype 選択 生成のパターンの分類 2つに大別 継承 Factory Method 集約 Abstract Factory Builder Prototype 比較検討 -- シンプルな…

GoF本 Singleton

まとめ モチベーション つかいどころ 功罪 実装面 用例 関連するパターン まとめ クラスから生成されるオブジェクトを1つに絞る モチベーション オブジェクトがただ1つであることが重要なケースがある 例 ファイルシステム ウィンドウ 「ただ一つのオブジェ…

GoF本 Prototype

まとめ モチベーション 登場人物 つかいどころ 功罪 実装 関連するパターン まとめ newとかするのではなく、作り置きしたオブジェクトをClone()する モチベーション AbstractFactoryやFactoryMethodを導入すると、 AbstractFactoryやCreatorのサブクラスを大…

GoF本 FactoryMethod

まとめ オブジェクトを生成・返却するメソッドのインタフェースを定義する 実際にどのクラスを生成するかはサブクラスの実装|overrideに委ねる 別名 Virtual Constructor モチベーション 世の中のプログラムフレームワークは抽象クラスを扱う フレームワーク…

GoF本 Builder

モチベーション 登場人物 全体像 クライアントコードからの利用 功罪 実装面で考えるべきこと Builderクラスの構築処理のインタフェース Productは汎化しない 基底のBuilderのメソッドは空の処理 用例 関連するパターン BuilderとAbstarctFactoryとのちがい …

GoF本 AbstractFactory

まとめ 別名 登場人物 全体像 つかいどころ 功罪 実装面 Singleton ふつうの実装 Familyが多い場合・Family間の差分が少ない場合の実装 Productが増えても大変にならない実装 型安全 関連するパターン まとめ 一式のオブジェクト群を生成するクラス 関連があ…

GoF本 Chapter 2 WIP

Chapter 2 A CASE STUDY:DESIGNING A DOCUMENT EDITOR ドキュメントエディタ「Lexi」を題材に、 さまざまな設計上の困難と それを克服するために使用されているデザインパターン を紐解いていく Chapter 2 A CASE STUDY:DESIGNING A DOCUMENT EDITOR 2.2 Doc…