デザインパターン

TemplateMethodパターン

Template Method パターン - Wikipediaアルゴリズムのテンプレートを提供する。 abstract class TemplClass { //privateなメソッドは継承クラスで実装必要あり。 //実際に外部から使われる操作はあらかじめ定義されており、どの継承クラスで呼び出しても同じ…

Adapterパターン

Adapter パターン - Wikipediaラッパーパターンとも呼ばれる。 基本的な委譲の使い方。 「既に提供されているもの」と「必要なもの」の差を埋めるパターン。 class Adapter{ private ITarget target; public Adapter(ITarget target) { //メンバにセット } p…

Interpreterパターン

Interpreter パターン - Wikipedia構文解析に使用する。普段ではあまり使わないパターンかな。 Contextクラス 解析対象をトークンに分割する。 解析文字列をメンバに持つ。 非トークン文字列リストをメンバに持つ。 現在のトークンを取得する操作を持つ。(解…

Commandパターン

Command パターン - Wikipedia どの種類の操作も"操作"とひとくくりにする -> Commandインターフェイス 操作毎に実装クラスを作成する。このクラスに実際の処理を行うクラスを内包する。 下記ソースは Commandインターフェイスとして「ICommand」 実装コマン…

Proxyパターン

Proxy パターン - Wikipedia インスタンスの遅延生成 必要になってから生成を始めたり、Proxyクラスの生成したら作り始めたり。 Proxyクラスと遅延生成クラスの操作は別に共通でなくてもいいと思う。 //何かのデバイス操作Interface public interface IDevic…

Flyweightパターン

Flyweight パターン - Wikipedia重いクラスインスタンスは共有しましょうという考え。 共有すると、一カ所の変更がすべてに影響を及ぼすので注意が必要。 public class FlyweightFactory { private Hashtable make_objs = new Hashtable(); public Flyweight…

Mementoパターン

Memento パターン - Wikipedia 管理したい情報を表すクラス(Memento) Mementoクラスを作成するクラス(Originator) OriginatorからMementoを取得・保管するクラス(Caretaker) で構成される。MementoのAPIはOriginatorに対しては全て公開されているのに対して…

Observerパターン

Observer パターン - Wikipedia 通知者(被観察者)と通知先(観察者)で構成される。通知者が(自分の状態が変化した等)で通知先に連絡すると、通知先では通知者の情報を使用して処理を行う。 通知者、通知先はそれぞれインターフェースを実装している。 このイ…

Mediatorパターン

Mediator パターン - Wikipedia 相談役と複数の相談する側で構成される。相談側が相談事が発生したら相談役に連絡し、相談役は相談側に行動指示を行う関係。 相談側達は相談役とだけ会話を行い、相談側同士は関係が無い状態である。 GUIプログラミングのフォ…

Facadeパターン

Facade パターン - Wikipedia 直接外部とやりとりしない低レベルなクラス群と、それらを使用して処理を行う外部IFを持つ高レベルなクラスの関係。 高レベルクラスでの処理は、低レベルクラスを正しく使用して処理を行う為、低レベルクラスの取説的な役割を持…