作者 内容
 smilingleo  设计模式之Observer模式:java语言实现(请各位大侠指正)

import java.util.*;

class Subject{
public Vector observers = null;
public Subject(){
Vector obs = new Vector();
this.observers = obs;
}
public void attach(Observer o){
observers.addElement(o);
}
public void detach(Observer o){
observers.removeElement(o);
}
public void notify1(){
Observer ob = null;
int count = this.observers.size();
for (int i=0;i< count;i++){
ob = (Observer)observers.elementAt(i);
ob.update(this);
}
}
}
class UserEnrollment extends Subject{
public void fillForm(){
System.out.println("User:I have fill the enrollment form!");
notify1();
}
}
class Observer{
public void update(Subject sub){
};
}
class ValidateUser extends Observer{
Subject s = null;
public ValidateUser(Subject sub){
this.s = sub;
s.attach(this);
}
public void update(Subject sub){
if (sub == s){
System.out.println("Administrator: You are a validated user now!");
}
}
}
public class ObserverTest{
public static void main(String args[]){
UserEnrollment ue = new UserEnrollment();
ValidateUser vu = new ValidateUser(ue);
ue.fillForm();
}
}
 01/09/13 16:14 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 wwh0058  回复: 设计模式之Observer模式:java语言实现(请各位大侠指正)

我觉得没有什么问题,
想问一下,如果有多个subject,一个observer,
是不是不太合适了,这个时候是不是不能在observer的构造函数中加参数了,
尔要client显式执行subject.attach()
 01/09/13 17:36 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 smilingleo  回复: 设计模式之Observer模式:java语言实现(请各位大侠指正)

嗯,确实是有问题,我的那段程序只能是适合一个subject的模式,
还需要改进。
:)
 01/09/14 10:37 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首