您的位置:首页 > 编程语言 > Java开发

java设计模式之观察者模式

2016-02-23 21:32 549 查看
概述观察者模式相当于一对多的依赖,就是当一个对象改变时,会通知它所关联的类

在这里,我们把被观察者用接口Subject定义,把观察者用接口Observer定义

/**
* 被监视的需要实现这个接口,用于添加,删除,通知观察者
* @author zhou
*
*/
public interface Subject {
public void addObser(Obsered obsered);
public void deletObser(Obsered obsered);
public void notifiObser(String context);

}


/**
* 观察者实现这个接口,接收消息
* @author zhou
*
*/
public interface Observer {
public void ubdate(String str);
}


//被观察者
public class ConcreteSubject  implements Preson,Subject{
public List<Observer> list = new ArrayList<Observer>();

@Override
public void addObser(Observer obsered) {
// TODO Auto-generated method stub
list.add(obsered);//添加观察者

}

@Override
public void deletObser(Observer obsered) {
// TODO Auto-generated method stub
list.remove(obsered);//移除观察者
}

@Override
public void notifiObser(String str) {
// TODO Auto-generated method stub
for(Observer obsered:list){
obsered.ubdate(str);//通知观察者消息
}

}

@Override
public void eat() {
// TODO Auto-generated method stub
this.notifiObser("这货在吃饭");

}

@Override
public void haveFun() {
// TODO Auto-generated method stub
this.notifiObser("这货在玩耍");
}

}
/**
* 观察者
* @author zhou
*
*/
public class ConcreteObserver implements Observer {

@Override
public void ubdate(String str) {
// TODO Auto-generated method stub
System.out.println("韩非子在吃饭");
//在这里我已经得到消息
happy();
}

public void happy() {
// TODO Auto-generated method stub
System.out.println("这货很快乐");
}

}


//添加观察者

ConcreteSubject concreteSubject = new ConcreteSubject();
Observer lisi = new ConcreteObserver();

concreteSubject.addObser(liusi);

concreteSubject.haveFun();


github地址为: https://github.com/zhouwei5200/observer
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: