java观察者模式

来源:互联网 发布:淘宝模板软件破解版 编辑:程序博客网 时间:2024/05/29 04:15

观察者模式的定义

    定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都能收到通知,并被自动更新。   

观察者模式通用代码

步骤

    1.目标对象的定义,

    2.具体的目标对象的定义,

    3.观察者接口的定义,

    4.观察者具体实现

具体实现

    首先定义抽象的观察者:

//抽象观察者角色public interface Watcher{    public void update(String str);}

    然后定义抽象的主题角色,即抽象的被观察者,方法(添加、移除观察者,通知观察者):

//抽象主题角色,watched:被观察public interface Watched{    public void addWatcher(Watcher watcher);    public void removeWatcher(Watcher watcher);    public void notifyWatchers(String str);}

    然后定义具体的观察者:

public class ConcreteWatcher implements Watcher{    @Override    public void update(String str)    {        System.out.println(str);    }}

    具体的主题角色: 

import java.util.ArrayList;import java.util.List;public class ConcreteWatched implements Watched{    // 存放观察者    private List<Watcher> list = new ArrayList<Watcher>();    @Override    public void addWatcher(Watcher watcher)    {        list.add(watcher);    }    @Override    public void removeWatcher(Watcher watcher)    {        list.remove(watcher);    }    @Override    public void notifyWatchers(String str)    {        // 自动调用实际上是主题进行调用的        for (Watcher watcher : list)        {            watcher.update(str);        }    }}


    测试类:

public class Test{    public static void main(String[] args)    {        Watched girl = new ConcreteWatched();                Watcher watcher1 = new ConcreteWatcher();        Watcher watcher2 = new ConcreteWatcher();        Watcher watcher3 = new ConcreteWatcher();                girl.addWatcher(watcher1);        girl.addWatcher(watcher2);        girl.addWatcher(watcher3);                girl.notifyWatchers("开心");    }}


原创粉丝点击