建一个主题接口,所有主题必须实现此接口
//主题接口
public interface Subject {
//注册一个观察者
void registerObserver(Observer observer);
//移除一个观察者
void removeObserver(Observer observer);
//通知一个观察者
void notifyObservers();
}
观察者接口
//所有的观察者需要实现此接口
public interface Observer {
public void update(String msg);
}
3D服务号的实现类
//服务号的实现类
public class ObjectFor3D implements Subject {
private List<Observer> observers = new ArrayList<Observer>();
//3D彩票的号码
private String msg;
@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
int index = observers.indexOf(observer);
if(index >= 0){
observers.remove(observer);
}
}
@Override
public void notifyObservers() {
for(Observer observer:observers){
observer.update(msg);
}
}
//主题消息更新
public void setMsg(String msg){
this.msg = msg;
notifyObservers();
}
}
模拟两个使用者
public class Observer1 implements Observer{
private Subject subject;
public Observer1(Subject subject){
this.subject = subject;
subject.registerObserver(this);
}
@Override
public void update(String msg) {
System.out.println("observer1 得到 3D 号码 -->" + msg + ", 我要记下来。");
}
}
public class Observer2 implements Observer{
private Subject subject;
public Observer2(Subject subject){
this.subject = subject;
subject.registerObserver(this);
}
@Override
public void update(String msg) {
System.out.println("observer2 得到 3D 号码 -->" + msg + ", 我要告诉舍友们。");
}
}
测试代码
public class Test {
public static void main(String[] args) {
//模拟一个3D的服务号
ObjectFor3D subjectFor3d = new ObjectFor3D();
//客户1
Observer observer1 = new Observer1(subjectFor3d);
Observer observer2 = new Observer2(subjectFor3d);
subjectFor3d.setMsg("20140420的3D号码是:127" );
subjectFor3d.setMsg("20140421的3D号码是:333" );
}
}
2363

被折叠的 条评论
为什么被折叠?



