java设计模式之观察者模式

来源:互联网 发布:免费录音软件 编辑:程序博客网 时间:2024/06/05 14:35

概述观察者模式相当于一对多的依赖,就是当一个对象改变时,会通知它所关联的类

             在这里,我们把被观察者用接口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>();@Overridepublic void addObser(Observer obsered) {// TODO Auto-generated method stublist.add(obsered);//添加观察者}@Overridepublic void deletObser(Observer obsered) {// TODO Auto-generated method stublist.remove(obsered);//移除观察者}@Overridepublic void notifiObser(String str) {// TODO Auto-generated method stubfor(Observer obsered:list){obsered.ubdate(str);//通知观察者消息}}@Overridepublic void eat() {// TODO Auto-generated method stubthis.notifiObser("这货在吃饭");}@Overridepublic void haveFun() {// TODO Auto-generated method stubthis.notifiObser("这货在玩耍");}}
/** * 观察者 * @author zhou * */public class ConcreteObserver implements Observer {@Overridepublic void ubdate(String str) {// TODO Auto-generated method stubSystem.out.println("韩非子在吃饭");//在这里我已经得到消息happy();}public void happy() {// TODO Auto-generated method stubSystem.out.println("这货很快乐");}}


//添加观察者

ConcreteSubject concreteSubject = new ConcreteSubject();        Observer lisi = new ConcreteObserver();                concreteSubject.addObser(liusi);              concreteSubject.haveFun();

github地址为:  https://github.com/zhouwei5200/observer

1 0
原创粉丝点击