[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] MVCと『Javaオブジェクト設計』第5章
『Peter Coadによる Javaオブジェクト設計』を読む会 第1回のときに出た
MVC の話題の話題の続きです。
青柳龍也さんの『Java API プログラミングガイド』に、
「Observable/Observer は、SmallTalk では Model/View と呼ばれます」
という意味の記述がありました。
私は、
「じゃあControlerはどこにあるんだろう」
と言うのがずっと分からなかったです。
この話しを読書会の時にしたところ、
「Obsrevable には Model と Controler が共に含まれているのでは」
という意見がありました。
『Peter Coadによる Javaオブジェクト設計』第5章「通知を使った設計」にあった、
public interface IObserver {
public void update(Object source, Object changecode);
}
public interface IObservable {
public void addIObserver(IObserver aObserser);
public void deleteIObserver(IObserver aObserver);
public void deleteIObserver(IObserver aObserver);
}
public class ObserveableComponent extends Objcet {
private Vector observers = new Vector();
public void addIObserver(IObserver aObserver) {
observers.addElement(aObserver);
}
public void deleteIObserver(IObserver aObserver) {
observers.removeElement(aObserver);
}
public void deleteIObservers() {
observers.removeAllElements();
}
public void notifyIObservers(Object source, Object changecode) {
Enumlation e = observers.elements();
while `(e.hasMoreElements()) {
IObserver o = (IObserver)e.nextElement();
o.update(source, changecode);
}
}
}
これらをそれぞれ、
IObserver ==> IView
IObservable ==> IModel
ObservableComponent ==> Controler
という名前に変えてコーディングしてみました。
public interface IView {
public void update(Object o, Object change);
}
public interface IModel {
public void addIView(IView view);
public void deleteIView(IView view);
public void deleteIViews();
}
public class Controler {
private Vector views = new Vector();
public synchronized void addIView(IView view) {
this.views.addElement(view);
}
public synchronized void deleteIView(IView view) {
this.views.removeElement(view);
}
public synchronized void deleteIViews() {
this.views.removeAllElements();
}
public synchronized void notifyIViews(Object o, Object change) {
Enumeration e = this.views.elements();
while (e.hasMoreElements()) {
IView v = (IView)e.nextElement();
v.update(o, change);
}
}
}
なんだか頭がすっきりしたような気がします。^^;
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル8F FAX 03-5362-9008