| 作者 |
内容 |
| 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 |
酷帖! 臭帖! 回复 |
| 酷帖评价: 臭帖评价: |
| 返回页首 |
|
|