posts - 297,  comments - 1618,  trackbacks - 0
     观察者模式(Observer) 属于对象的行为模式
1. 定义
     定义对象间的一种一对多的关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知,并被自动更新。
2. 使用的原因
      
在应用程序开发过程中,往往都要求用户界面和业务逻辑分离,划定清晰的界限.因为应用程序要求能快速的更改用户界面并且不能对应用程序其他部分产生连带影响,而且业务逻辑也会发生变化并要求这一切变化与用户界面无关.观察者(observer)就是解决此问题最常用的设计模式,它非常有助于在系统中各个对象之间划分清晰的界限。
     观察者模式在界面设计中应用广泛。
     还有一种常见的情况,一个软件系统常常要求在某一个对象发生变化的时候,某些其它的对象做出相应的改变,而观察者模式是解决这个问题的一个低耦合度的设计方案,它能够减少对象之间的耦合以便更加利于系统的复用。
3. 适用的情况举例
    eg1.  
4. 类图结构及说明
  1)示意性类图如下所示:
  
  2)类说明
     i)抽象主题Subject:用于将所有的对象引用保存在一个聚集中(比如Vector对象)里,每个Subject可以有任何数量的观察者。它又被叫做抽象观察者(Observable)角色,一般使用抽象类或接口实现。
     ii)抽象观察者Observer:为所有的具体观察者定义一个接口,在得到Subject的通知时更新自己。
     iii)具体主题ConcreteSubject:将有关状态存入具体观察者对象。在具体主题的内部状态改变时,给所有登记过的观察者发出通知。又被称为具体被观察者角色。
     iv)具体观察者ConcreteObserver:实现了抽象观察者Observer,在被观察者发出通知时,将自行执行update方法更新。

5. 使用举例
      待续。
6. 参考文章
    1)《Pattens In Java》
    2)《Java与模式》
    3)http://i.cn.yahoo.com/whj1234586/blog/p_34/
    4)http://www.999qc.cn/Article/NET/15500/
posted on 2008-05-14 07:56 阿蜜果 阅读(4814) 评论(4)  编辑  收藏 所属分类: Design Pattern


FeedBack:
# re: 设计模式学习笔记--观察者模式(Observer) (未完待续)
2008-05-14 13:53 | 迷失的风
这个方法我见过,是在jzkit工具包里面有,像这个
Observer fragment_count_observer = new Observer() {
public void update(Observable o, Object arg) {
IREvent e = (IREvent) arg;

if (e.event_type == IREvent.SOURCE_RESET) {
System.err
.println("TIME: Sub Fragment source reset");
} else if (e.event_type == IREvent.FRAGMENT_COUNT_CHANGE) {
System.err
.println("TIME: Number of fragments has changed to "
+ e.event_info);

}
}
};

看的不是太明白,用起来迷糊。  回复  更多评论
  
# re: 设计模式学习笔记--观察者模式(Observer) (未完待续)
2008-05-16 15:22 | 网上买书
的确观察者模式在界面设计中应用广泛。  回复  更多评论
  
# re: 设计模式学习笔记--观察者模式(Observer) (未完待续)[未登录]
2008-11-26 19:40 | Lanny
最近我也在学习Observer模式,不过仍未在实际项目应用上:)  回复  更多评论
  
# re: 设计模式学习笔记--观察者模式(Observer) (未完待续)[未登录]
2009-09-21 19:43 | 随意
这样子说那使用delegate是不是一种简单的观察者模式呢?  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

      生活将我们磨圆,是为了让我们滚得更远——“圆”来如此。
      我的作品:
      玩转Axure RP  (2015年12月出版)
      

      Power Designer系统分析与建模实战  (2015年7月出版)
      
     Struts2+Hibernate3+Spring2   (2010年5月出版)
     

留言簿(262)

随笔分类

随笔档案

文章分类

相册

关注blog

积分与排名

  • 积分 - 2286424
  • 排名 - 3

最新评论

阅读排行榜

评论排行榜