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

摘要:本文深入浅出的讲述了设计模式中的 模式属于行为型模式,其意图是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在制作系统的过程中,将一个系统分割成一系列相互协作的类有一个常见的副作用:需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,因为这样降低了他们的可充用性。这一个模式的关键对象是目标(Subject )。一个目标可以有任意数目的依赖它的观察者,一旦目标的状态发生改变,所有的观察者都得到通知,作为对这个通知的响应,每个观察者都将查询目标以使其状态与目标的状态同步。这种交互也称为发布- 适用性:在以下的任一情况下可以使用观察者模式:
l 当对一个对象的改变需要同时改变其它对象,而不知道具体由多少对象有待改变。
l 例如:老师又电话号码,学生需要知道老师的电话号码以便于在合时的时候拨打,在这样的组合中,老师就是一个被观察者( 所示
1 参与者:
目标知道它的观察者。可以有任意多个观察者观察同一个目标。
观察者, 具体目标, 将有关状态存入各 当他的状态发生改变时,向他的各个观察者发出通知。
对象的引用。
实现 协作关系:
发生任何可能导致其观察者与其本身状态不一致的改变时,他将通知他的各个观察者。
对象可向目标对象查询信息。 相关代码:
public  Subject{
      voidpublic  notice();
代码:
public  Observer{
  }
 observer;
public  Teacher      phoneprivate;
 Teacher(){
 =          new      void students      void students      void for  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值