手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

观察者模式(感谢mpeg提供源码)

首页 > PHP >
PHP代码
  1. <?php   
  2. interface IObserver {   
  3.   function onChanged( $sender$args );   
  4. }   
  5.   
  6. interface IObservable {   
  7.   function addObserver( $observer );   
  8. }   
  9.   
  10. class UserList implements IObservable {   
  11.   private $_observers = array();   
  12.   public function addCustomer( $name )  {   
  13.     foreach$this->_observers as $obs )   
  14.       $obs->onChanged( $this$name );   
  15.   }   
  16.   public function addObserver( $observer )  {   
  17.     $this->_observers []= $observer;   
  18.   }   
  19. }   
  20. class UserListLogger implements IObserver {   
  21.   public function onChanged( $sender$args )  {   
  22.     echo"'$args' added to user list\n" );   
  23.   }   
  24. }   
  25. $ul = new UserList();   
  26. $ul->addObserver( new UserListLogger() );   
  27. $ul->addCustomer( "Jack" );   
  28. ?>   
  29.   

mpeg的网站地址为:www.phpubb.com

更多介绍,请参考MSDN网站:http://msdn.microsoft.com/zh-cn/library/ms954621.aspx

以下是部分内容:

 

XML/HTML代码
  1. 观察者模式    
  2.   
  3. 面向对象的开发的一个主导原则是,在给定的应用程序中正确地分配任务。 系统中的每个对象应该将重点放在问题域中的离散抽象上,而不是放在任何其它方面。 简而言之,一个对象只应做一件事,而且要将它做好。 这种方法可确保在对象之间划定清晰的界限,因而可提供更高的重用性和系统可维护性。   
  4.   
  5. 一个正确划分任务特别重要的领域就是,用户界面和基础业务逻辑之间的交互。 在应用程序的开发过程中,需要快速更改用户界面要求,并且不会对应用程序的其他部分产生连带影响,这是司空见惯的事。 此外,业务要求也可能会发生变化,而这一切与用户界面无关。 具有丰富开发经验的人都知道,在很多情况下,这两组要求都会发生变化。 如果没有划分 UI 和应用程序其他部分,修改任一部分都会对整体造成不利的影响。   
  6.   
  7. 很多应用程序都会遇到以下常见问题:需要在用户界面和业务逻辑之间划分清晰的界限。 因此,自 GUI 出现以后开发的很多面向对象的框架均支持将用户界面从应用程序的其他部分中划分出来。 不要惊讶(可能有一点),其中的大部分应用程序采用类似的设计模式来提供此功能。 这种模式通常称为观察者,它在系统中的各种对象之间划分清晰的界限方面非常有利。 此外,还会经常看到在框架或应用程序中与 UI 无关的部分中使用这种解决方案。 正如大多数其他模式一样,观察者模式的作用远远超过了其最初的想法。   
  8.   
  9. 逻辑模型    
  10.   
  11. 虽然观察者模式有很多变体,但该模式的基本前提包含两个角色:观察者和主体(熟悉 Smalltalk MVC 的人将这些术语分别称为视图和模型)。 在用户界面的环境中,观察者是负责向用户显示数据的对象。 另一方面,主体表示从问题域中模拟的业务抽象。 正如图 1 中所描述的一样, 在观察者和主体之间存在逻辑关联。 当主体对象中发生更改时,(例如,修改实例变量),观察者就会观察 这种更改,并相应地更新其显示。   



本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: 模式

« 上一篇 | 下一篇 »

只显示10条记录相关文章

7条记录访客评论

你还是详细检查那个class吧,好象那个class有点问题,你尝试用discuz的class试一下呢?因为相关的db class都是差不多的。

还有可能。。你没有选择数据库。。

Post by gouki on 2008, May 24, 12:23 AM 引用此文发表评论 #1

这个问题,我还是解决不了。我是个初学者。请能不能讲解仔细点呢!

Post by storm on 2008, May 22, 4:33 PM 引用此文发表评论 #2

我刚检查了一下,已经连接是数据库了。怎样解决错误句柄呢?

Post by storm on 2008, May 22, 2:18 PM 引用此文发表评论 #3

mysql 已经开启了。请问怎样检查数据库是否连接上了呢?有什么命令吗?

Post by storm on 2008, May 22, 2:10 PM 引用此文发表评论 #4

1、检查一下,你的mysql是否开启,但看你的第一个出错,应该是已经开启
2、连接是否正常。因为第一个出错,是说你的连接句柄不正常,请检查数据库连接。
如果第一个问题修复了,以下两个问题应该是可以直接解决的。

Post by gouki on 2008, May 22, 12:15 PM 引用此文发表评论 #5

我链接数据库总是出现一下内容。对于数据库是不是规定要放在特定的文件夹内。
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in G:\WEB\C241\DataBase.php on line 35

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in G:\WEB\C241\DataBase.php on line 37

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in G:\WEB\C241\DataBase.php on line 21

Post by storm on 2008, May 22, 10:45 AM 引用此文发表评论 #6

我有个很急的php问题想请你帮个忙。是《精通PHP+MYSQL应用开发》纠错 C24 上的,我老是连不上数据库。谢谢!

Post by storm on 2008, May 22, 10:40 AM 引用此文发表评论 #7


发表评论

评论内容 (必填):