方维二次开发

wangtongphp

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PHP设计模式之观察者模式

PHP 设计模式之观察者模式

观察者模式:

将观察者逻辑写到业务逻辑里面去,

适用业务场景举例:

注册用户之后,①通知用户欢迎使用此系统②给推荐人积分③写入日志程序。

 

适用场景及注意事项:

①一个业务逻辑的对象会引起其他一个或多个业务逻辑,能用于对象之间的通信

②依赖性弱,被观察者里面添加方法用来关联其他对象,关联是在对象外面执行,类的独立性强。

③各个观察者类最好继承一个接口,因为观察者的方法名可能存在于被观察者的方法中。

 

<?php
interface IObserver
{
  function onChanged( $sender, $args );
}

interface IObservable
{
  function addObserver( $observer );
}

class UserList implements IObservable
{
  private $_observers = array();

  public function addCustomer( $name )
  {
    foreach( $this->_observers as $obs )
      $obs->onChanged( $this, $name );
  }

  public function addObserver( $observer )
  {
    $this->_observers []= $observer;
  }
}

class UserListLogger implements IObserver
{
  public function onChanged( $sender, $args )
  {
    echo( "'$args' added to user list\n" );
  }
}

$ul = new UserList();
$ul->addObserver( new UserListLogger() );
$ul->addCustomer( "Jack" );
?>

 

posted on 2014-03-14 16:47  方维二次开发  阅读(264)  评论(0编辑  收藏  举报