1.观察者模式
观察者模式也可以叫发布-订阅模式,是一种事件监听机制,多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。
2.示例
/**
* 抽象主题角色(被观察者/发布者)
*/
public abstract class Subject
{
private List<Observer> list = new ArrayList<Observer>();
public void add(Observer observer)
{
list.add(observer);
}
public void del(Observer observer)
{
list.remove(observer);
}
public void notifyObservers(String newData)
{
for(int i=0;i<list.size();i++){
list.get(i).update(newData);
}
}
}
public class RealSubject extends Subject
{
public void change(String data)
{
System.out.println("主题数据为"+data);
notifyObservers(data);
}
}
/**
* 观察者(订阅者)
*/
public interface Observer
{
public void update(String data);
}
public class RealObserver implements Observer
{
private String data;
@Override
public void update(String data)
{
this.data = data;
System.out.println("更新了新数据"+data);
}
}
public class ObserverTest
{
public static void main(String[] args)
{
/** 创建主题角色 */
RealSubject subject = new RealSubject();
/** 创建观察者对象 */
Observer observer = new RealObserver();
/** 将观察者注册到主题对象上 */
subject.add(observer);
/** 改变主题对象的数据 */
subject.change("new data");
}
}