Hatena::ブログ(Diary)

今日もスミマセン。

Do you follow me?

2012-05-31

VB6開発者に贈るGoFデザインパターン【予告編】

あまり知られていないような気がしますが、VB6にも不完全ながらオブジェクト指向プログラミングを実現するための機能は備わっています。

  • public, friend, private でのスコープ制御によるカプセル化の実現。
  • インターフェースによる多態性。
  • 継承はサポートされていませんが、委譲を使って継承と似たことは実現できます。(かなり実装が大変ですが)

と、いうことで VB6 で GoF のデザインパターンを実装してみて、どのようなケースでそのパターンが有効なのか、という点を VB6 の開発者目線で紹介するシリーズとして記事を書いてみようと思います。

以下、Wikipediaから拾ってきた GoF のデザインパターンを列挙しておきます。

記事を書く毎にその記事へのリンクを挿入していきたいと思います。


生成に関するパターン

Abstract Factory パターン
関連する一連のインスタンスを状況に応じて適切に生成する方法を提供する。
Builder パターン
複合化されたインスタンスの生成過程を隠蔽する。
Factory Method パターン
実際に生成されるインスタンスに依存しない、インスタンスの生成方法を提供する。
Prototype パターン
同様のインスタンスを生成するために、原型のインスタンスを複製する。
Singleton パターン
あるクラスについて、インスタンスが単一であることを保証する。

構造に関するパターン

Adapter パターン
元々関連性のない2つのクラスを接続するクラスを作る。
Bridge パターン
クラスなどの実装と、呼出し側の間の橋渡しをするクラスを用意し、実装を隠蔽する。
Composite パターン
再帰的な構造を表現する。
Decorator パターン
あるインスタンスに対し、動的に付加機能を追加する。Filterとも呼ばれる。
Facade パターン
複数のサブシステムの窓口となる共通のインタフェースを提供する。
Flyweight パターン
多数のインスタンスを共有し、インスタンスの構築のための負荷を減らす。
Proxy パターン
共通のインタフェースをもつインスタンスを内包し、利用者からのアクセスを代理する。Wrapperとも呼ばれる。

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

Chain of Responsibility パターン
イベントの送受信を行う複数のオブジェクトを鎖状につなぎ、それらの間をイベントが渡されてゆくようにする。
Command パターン
複数の異なる操作について、それぞれに対応するオブジェクトを用意し、オブジェクトを切り替えることで操作の切替えを実現する。
Interpreter パターン
構文解析のために、文法規則を反映するクラス構造を作る。
Iterator パターン
複数の要素を内包するオブジェクトのすべての要素に順にアクセスする方法を提供する。反復子。
Mediator パターン
オブジェクト間の相互作用を仲介するオブジェクトを定義し、オブジェクト間の結合度を低くする。
Memento パターン
データ構造に対する一連の操作のそれぞれを記録しておき、以前の状態の復帰または操作の再現が行えるようにする。
Observer パターン
インスタンスの変化を他のインスタンスから監視できるようにする。Listenerとも呼ばれる。
State パターン
オブジェクトの状態を変化させることで、処理内容を変えられるようにする。
Strategy パターン
データ構造に対して適用する一連のアルゴリズムをカプセル化し、アルゴリズムの切替えを容易にする。
Template Method パターン
あるアルゴリズムの途中経過で必要な処理を抽象メソッドに委ね、その実装を変えることで処理が変えられるようにする。
Visitor パターン
データ構造を保持するクラスと、それに対して処理を行うクラスを分離する。

※上記のパターン名称および説明の文章は「デザインパターン (ソフトウェア) - Wikipedia」より引用していますが、それぞれのリンク先は。このブログに掲載されている記事へのリンクです*1

*1:これから記事を投稿するごとにリンクしていく予定です