观察者模式(Observer)解析例子

来源:互联网 发布:mac英文联想输入法 编辑:程序博客网 时间:2024/06/15 19:18
摘要:本文深入浅出的讲述了设计模式中的模式属于行为型模式,其意图是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在制作系统的过程中,将一个系统分割成一系列相互协作的类有一个常见的副作用:需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,因为这样降低了他们的可充用性。这一个模式的关键对象是目标(Subject)。一个目标可以有任意数目的依赖它的观察者,一旦目标的状态发生改变,所有的观察者都得到通知,作为对这个通知的响应,每个观察者都将查询目标以使其状态与目标的状态同步。这种交互也称为发布-适用性:在以下的任一情况下可以使用观察者模式:
l当对一个对象的改变需要同时改变其它对象,而不知道具体由多少对象有待改变。
l例如:老师又电话号码,学生需要知道老师的电话号码以便于在合时的时候拨打,在这样的组合中,老师就是一个被观察者(所示
1参与者:
目标知道它的观察者。可以有任意多个观察者观察同一个目标。
观察者,具体目标,将有关状态存入各当他的状态发生改变时,向他的各个观察者发出通知。
对象的引用。
实现协作关系:
发生任何可能导致其观察者与其本身状态不一致的改变时,他将通知他的各个观察者。
对象可向目标对象查询信息。相关代码:
public Subject{
     voidpublic notice();
代码:
public Observer{
 }
 observer;
public Teacher     phoneprivate;
 Teacher(){
 =        new    voidstudents    voidstudents    voidfor i=0;i<           ((Observer)    }
        phone    }
 String getPhone(){
     }
代码:
public Student     nameprivate;
 Teacher            nameteacher    voidout+"\nTeacher'sphone:");
public update(){
 =     }
代码:
import     static main(String[] args){
 Vector();
 Teacher();
(           Student st = "lili"           t.attach(st);
"88803807"for i=0;i<10;i++)
"88808880"for i=0;i<10;i++)
}
 
模式的最知名的应用是在MVC模式可以很好的应用在文档和图表程序的制作中。
0 0
原创粉丝点击