2008年5月29日木曜日

Squeak上でObserverパターンを適用する方法

Squeak上でObserverパターンを適用する方法を以下にメモしておきます.

Observerパターンは,あるオブジェクトの内容に関与するオブジェクトに,その内容の変化に応じて何らかの処理を行わせたいときに使われるデザインパターンです.

Observerパターンでは,Subjectという役割のクラス(あるオブジェクトが所属するクラス)とObserverという役割のクラス(あるオブジェクトの内容に関与するオブジェクトが所属するクラス)が登場します.Squeakでは,それら両方の役割を最上位のクラスであるObjectクラスに与えています.したがって,Objectクラスを継承したクラスは,その時点でどちらの役割も果たせる状態になっています.ただし,Objectクラスのメソッド名は,デザインパターンの資料[1],[2]で紹介されているメソッド名と異なっているので,その対応関係を以下に記しておきます.
  • Subject::attach <-> Object::addDependent:
    SubjectにObserverを追加
  • Subject::detach <-> Object::removeDependent:
    SubjectからObserverを削除
  • Subject::notify <-> Object::changed:
    SubjectがObserverに通知.
  • Observer::update <-> Object::update:
    SubjectがObserverに通知した際に呼び出されるメソッド.中身は空っぽ.
[1] Observer pattern
http://en.wikipedia.org/wiki/Observer_pattern

[2] オブジェクト指向における再利用のためのデザインパターン改訂版
Erick Gamma, Richard Helm, Ralph Johnson, John Vlissides: ソフトバンクパブリッシング, 1999

[3] 7. Squeak演習:Observerパターン
http://www.ogis-ri.co.jp/otc/hiroba/technical/Squeak5/S5-7-1.html
http://www.ogis-ri.co.jp/otc/hiroba/technical/Squeak5/S5-7-2.html

0 件のコメント: