分享

观察者(Observer)模式

 昵称70680357 2020-06-30

名称:

    观察者模式(Observer Pattern)

 

问题:

     Observer pattern defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. It is also referred to as the publish-subscribe pattern.    

 

解决方案:

    

1、 模式的参与者

    1、Subject

    -目标知道它的观察者。可以有任意多个观察者观察同一个目标。

    -提供注册和删除观察者对象的接口。

    2、Observer

    -为那些在目标发生改变时需获得通知的对象定义一个更新接口。

    3、ConcreteSubject

    -将有关状态存入各ConcreteObserver对象。

    -当它的状态发生改变时,向他的各观察者发出通知。

    4、ConcreteObserver

    -维护一个指向ConcreteSubject对象的引用。

    -存储有关状态,这些状态应与目标的状态保持一致。

    -实现Observer的更新接口以使自身状态与目标的状态保持一致。

 

2.实现方式

语言 方法
4970 mAV7dTmkFb
Z5sOy mcn机构是什么意思
6433 2011.12.13 10-46-07
复制代码
abstract class Subject
{
    protected List<Observer> observers=new ArrayList<Observer>();   

    public void add(Observer observer)
    {
        observers.add(observer);
    }    
   
    public void remove(Observer observer)
    {
        observers.remove(observer);
    }   
    public abstract void notifyObserver(); 
}
复制代码
复制代码
class ConcreteSubject extends Subject
{
    public void notifyObserver()
    {    
       
        for(Object obs:observers)
        {
            ((Observer)obs).response();
        }
       
    }          
}
复制代码
interface Observer
{
    void response(); 
}
复制代码
class ConcreteObserver1 implements Observer
{
    public void response()
    {
        System.out.println("Observer1 action");
    }
}
复制代码
复制代码
class ConcreteObserver2 implements Observer
{
    public void response()
    {
        System.out.println("Observer2 action");
    }
}
复制代码

 

参考资料

《设计模式:可复用面向对象软件的基础》

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多