java中观察者模式思路浅谈总结

    xiaoxiao2022-07-02  137

    1.观察者模式有四个角色:

    抽象被观察者角色:定义注册观察者,删除观察者和通知观察者方法。

    具体被观察者角色:抽象被观察者角色的具体实现。

    抽象观察者角色:定义一个接收消息更新方法。

    具体观察者角色:抽象观察者角色的具体实现。

    抽象被观察者角色接口定义:

    package renchaofeng_observer; public interface Observerable { void registerObserver(Observer observer);//注册观察者 void removeObserver(Observer observer);//移除观察者 void notifyObserver();//通知观察者 void setMessage(String message); }

    具体被观察者实现:

    package renchaofeng_observer; import java.util.*; public class ObserverableImpl implements Observerable { List<Observer> observers = new ArrayList<Observer>(); private String message=null; public void registerObserver(Observer observer) { observers.add(observer); } public void removeObserver(Observer observer) { if(!observers.isEmpty()) { observers.remove(observer); } } @Override public void notifyObserver() { for(Observer o : observers) { o.update(message); } } public void setMessage(String message) { this.message = message; }; }

    抽象观察者接口定义:

    package renchaofeng_observer; public interface Observer { void update(String message);//接收通知消息做出更改处理 }

    具体观察者实现:

    package renchaofeng_observer; public class ObserverLi implements Observer { @Override public void update(String message) { System.out.println("小李收到消息:"+message); } } package renchaofeng_observer; public class ObserverWang implements Observer { @Override public void update(String message) { System.out.println("小王收到消息:"+message); } }

    测试类:

    package renchaofeng_observer; import org.junit.Test; public class ObserverTest { @Test public void testonef() { Observerable obable = new ObserverableImpl(); Observer li = new ObserverLi(); Observer wang = new ObserverWang(); obable.registerObserver(li); obable.registerObserver(wang); obable.setMessage("谷歌牛逼。。"); obable.notifyObserver(); } }

    输出结果:

    小李收到消息:谷歌牛逼。。 小王收到消息:谷歌牛逼。。

    so,观察者介绍完毕。

    参考:https://blog.csdn.net/u012233285/article/details/52966870

    最新回复(0)