LastUpdate: 2009/07/29 05:52:06

戻る

目指せ23パターン

VB.NETとC#でデザインパターン
http://hccweb1.bai.ne.jp/tsune-1/
23パターン マルチスレッド編
生成に関するもの

Abstract Factory パターン

Singleton パターン

構造に関するもの

Proxy パターン

振る舞いに関するもの

Template Method パターン 

Flyweight パターン

 

Single Threaded Exexution
この橋を渡れるのはたった一人

Immutable
壊したくても壊せない

Guarded Suspension
用意できるまで

Balking
必要なかったらやめちゃおう

Producer-Consumer
わたしが作りあなたが使う

Read-Write Lock
みんなで読んでもいいけれど、読んでる間は書いちゃだめ

Thread-Per-Message
この仕事、やっといてね

Worker Thread
仕事がくるまで待ち、仕事がきたら働く

Future
引換券を、お先にどうぞ

Two-Phase Termination
あとかたづけしてから、おやすみなさい

Thread-Specific Storage
スレッドごとのコインロッカー

Active Object
非同期メッセージを受け取る、能動的なオブジェクト


Abstract Factory パターン

目的とするインスタンス を生成する時に生成を目的といしたファクトリークラスを作るのは常套手段だが、そのファクリーも抽象的に作ってしまおうというのが、この抽象生成(Abstract Factory)パターンとなりようです。

Singleton パターン

「あるクラスに対してインスタンスが1つしか存在しないことを保証し、それにアクセスするためのグローバルな方法を提供する。」とあります。私に言わせると、グローパルオブジェクトを扱えるようにする時にベンリな訳です。

決め手は、クラスのスタティクメソッドは、アドレスが不明でもダイレクト参照できる事を利用したもんですね。

各アプリケーションで大変頻度が多く使い、またそれがアプリケーションで唯一のものであるならこの手法。データベースのPOOLオブジェクトなどが良い例でしょうか。

あるプロジェクトではこういうグローバールオブジェクトは全部のクラスにポインタ持ち込んでたな〜。

2002/02/13


ディストラクタはどうするの?

確かに、本に載っている遅延初期化の方式では、ディストラクタを走らす方法がない。
回避方法は、

  1. スタティックでディストラクトメソッドを実装すること。
  2. 遅延初期化ではなく、プライベートなインスタンスをスタテック変数で持つこと。こうすれば、プロセスの終了時に、ディストラクタが走る...らしい。

2003/01/28 O氏


Proxy パターン

「生成にコストのかかる もしくは 生成に注意を払わなければならないオブジェクトに対するアクセスを制御するために、そのオブジェクトとそっくりな代理を提供するパターン」 とある。

各種サンプルを見ていると、「そっくりな」を実現するために、インターフェイスを用いて本物(RealObject)と代理(ProxyObject)を抽象化している。

利用する側は、ProxyObjectのみ意識させるようにし、直接RealObjectを利用しないようにしている。

たぶん、RealObjectを生成するにはコストが高いので、ProxyObjectを窓口として利用し、ProxyObjectが必要と思った場合にのみ、ProxyObjectが内部でRealObjectを生成、移譲して処理を行う考え方であろうか。

2003/08/04


Template Method パターン

「1つのオペレーションにアルゴリズムのスケルトンを定義しておき、その中のいくつかのステップについては、サブクラスでの定義に任せることにする。Template Method パターンでは、アルゴリズムの構造を変えずに、アルゴリズム中のあるステップをサブクラスで再定義する。」

言われる前から使ってます。ひな形としてよく利用してますね。

2002/02/13


Flyweightパターン

「多数の細かいオブジェクトを効率よくサポートするために共有を利用する。」

同じものなら、インスタンスを共有しましょう〜→メモリの効率化。

Javaで、同じ内容のString定数などは、このパターンの一例とか。

2002/09/24


デザインパターン
http://www002.upp.so-net.ne.jp/ys_oota/mdp/


Single Threaded Exexution この橋を渡れるのはたった一人

synchronized を用いて 排他ロックを行う考え方。


Producer-Consumer わたしが作りあなたが使う

読む人、書く一の共通の掲示板を設ける。掲示板に、ロック機能を持たせる考え方。


Read-Write Lock みんなで読んでもいいけれど、読んでる間は書いちゃだめ

読む人、書く人、二つのロックを管理する方式


戻る