冬のセール!

デザインパターンを Ruby で

Rust で書かれた例題コードのカタログ

生成に関するパターン

Abstract Factory

Abstract Factory

関連したオブジェクトの集りを 具象クラスを指定することなく生成することを可能にします

Builder

Builder

複雑なオブジェクトを段階的に構築できます このパターンを使用すると 同じ構築コードを使用して異なる型と表現のオブジェクトを生成することが可能です

Factory Method

Factory Method

スーパークラス内でオブジェクトを作成するためのインターフェースを提供しますが サブクラスでは作成されるオブジェクトの型を変更することができます

Prototype

Prototype

既存オブジェクトのコピーをそのクラスに依存することなく可能とします

Singleton

Singleton

クラスが一つのインスタンスのみを持つことを保証するとともに このインスタンスへの大域アクセス・ポイントを提供します

構造に関するパターン

Adapter

Adapter

非互換なインターフェースのオブジェクト同士の協働を可能とします

Bridge

Bridge

巨大なクラスや密接に関連したクラスの集まりを 抽象部分と実装部分の二つの階層に分離し それぞれが独立して開発できるようにします

Composite

Composite

オブジェクトからツリー構造を組み立て その木構造がまるで独立したオブジェクトであるかのように扱えるようにします

Decorator

Decorator

ある振る舞いを含む特別なラッパー・オブジェクトの中にオブジェクトを配置することで それらのオブジェクトに新しい振る舞いを付け加えます

Facade

Facade

ライブラリー フレームワーク その他のクラスの複雑な組み合わせに対し 簡素化されたインターフェースを提供します

Flyweight

Flyweight

複数のオブジェクト間で共通する部分を各自で持つ代わりに共有することによって 利用可能な RAM により多くのオブジェクトを収められるようにします

Proxy

Proxy

他のオブジェクトの代理 代用を提供します プロキシーは 元のオブジェクトへのアクセスを制御し 元のオブジェクトへリクエストが行く前か後に別の何かを行うようにすることができます

振る舞いに関するパターン

Chain of Responsibility

Chain of Responsibility

ハンドラーの連鎖に沿ってリクエストを渡すことができます 各ハンドラーは リクエストを受け取ると リクエストを処理するか 連鎖内の次のハンドラーに渡すかを決めます

Command

Command

リクエストを それに関するすべての情報を含む独立したオブジェクトに転換します この転換により リクエストをメソッドの引数として渡したり リクエストの実行を遅らせたり 待ち行列に入れたり 取り消し操作を行なうことが可能になります

Iterator

Iterator

リスト スタック ツリーなどの実際のデータ表現を表に出さずにコレクションの要素を探索することができます

Mediator

Mediator

オブジェクト間の混沌とした依存性を削減します パターンは オブジェクト間の直接の通信を制限し メディエーター・オブジェクトを介してのみの共同作業を強制します

Memento

Memento

オブジェクトの以前の状態を保存し復元することを 実装の詳細を明かさずに行います

Observer

Observer

複数のオブジェクトが観察しているオブジェクトに何かイベントが発生した時にそのイベントについて観察しているオブジェクトへ通知を行うサブスクリプションの仕組みを定義することができます

State

State

オブジェクトの内部状態が変化した時に その挙動を変化させます それは あたかもそのオブジェクトのクラスが変わったかのように見えます

Strategy

Strategy

アルゴリズムのファミリーを定義し それぞれのアルゴリズムを別個のクラスとし それらのオブジェクトを交換可能にします

Template Method

Template Method

スーパークラス内でアルゴリズムの骨格を定義しておき サブクラスは構造を変えることなくアルゴリズムの特定のステップを上書きします

Visitor

Visitor

アルゴリズムをその動作対象となるオブジェクトから切り離します