您的位置:首页 > 其它

Observer Pattern 观察者模式

2015-07-04 03:22 169 查看
Publisher, Subject

Subscriber, Observer

Observer Pattern: defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically.

观察者模式定义Subject抽象接口和Observer抽象接口。

public interface Subject{
registerObserver();
removeObserver();
notifyObserver();
}

public interface Observer {
update();
}


Design principle:
Strive for loosely coupled designs between objects that interact.

Loosely coupled designed allow us to build flexible OO systems that can handle change because they minimize the interdependency between objects.

对象之间低耦合。

Pull mode:  Subject自己作为参数传给Observer,Observer调用Subject的getters来获取值。Observer可以选则获取哪些值。

Push mode: Subject把值传给Observer。Observer可以选用哪些值。

Java built-in Observer Pattern

1. You should not depend on a specific notification order.

2. Observable is a class.

extends Observable;
1. addObserver();
2. deleteObserver();
3. notifyObserver();
4. setChanged();
5. clearChanged();


public interface Observer {
update(Observable o, Object arg);
}

当你能extends Observable时,可以使用内建的Observer Pattern。否则要用写interface的方式。

观察者模式主要用来解除一个抽象模型的紧耦合,当一个抽象模型的有两个方面,其中一个方面(通常是多的那一方)依赖于另一个方面(通常是少的那一方)的变化,这时,我们应用观察者模式,将多的一方定义为订阅者,少的一方定义为发布者。

(1)如果一个被观察者对象有很多直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。

(2)如果在被观察者之间有循环依赖的话,被观察者会触发它们之间进行循环调用,导致系统崩溃。在使用观察考模式时要特别注意这一点。
应用:Newspaper,GUI,传感器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: