Android知识Android开发Android技术知识

观察者模式

2017-05-08  本文已影响41人  程序员丶星霖

观察者模式

定义

观察者模式也叫做发布订阅模式,是一个在项目中经常使用的模式。定义对象之间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。

英文定义:Define a one-to-many dependency between objects so that when one object changes state , all its dependents are notified and updated automatically .

观察者模式的UML类图如下所示

观察者模式.jpg

上图中涉及到的角色及职责如下所示:

观察者模式的示例代码如下所示:

//被观察者模式
public abstract class Subject{
    //定义一个观察者数组
    private Vector<Observer> obsVector = new Vector<Observer>();
    //增加一个观察者
    public void addObserver(Observer o){
        this.obsVector.add(o);
    }
    //删除一个观察者
    public void delObserver(Observer o){
        this.obsVector.remove(o);
    }
    //通知所有观察者
    public void notifyObservers(){
        for(Observer o:this.obsVector){
            o.update();
        }
    }
}
//具体被观察者
public class ConcreteSubject extends Subject{
    //具体的业务
    public void doSomething(){
        /*
        * do something
        */
        super.notifyObservers();
    }
}
//观察者
public interface Observer{
    //更新方法
    public void update();
}
//具体观察者
public class ConcreteObserver implements Observer{
    //实现更新方法
    public void update(){
        System.out.println("接收到信息,并进行处理!");
    }
}
//场景类
public class Client{
    //创建一个被观察者
    ConcreteSubject subject = new ConcreteSubject();
    //定义一个观察者
    Observer obs = new ConcreteObserver();
    //观察者观察被观察者
    subject.addObserver(obs);
    //观察者开始活动了
    subject.doSomething();
}

优缺点

优点:

缺点:
观察者模式需要考虑一下开发效率和运行效率问题。

使用场景:

注意事项

欢迎关注我的微信公众号

我的微信公众号.jpg
上一篇下一篇

猜你喜欢

热点阅读