浏览 4045 次
锁定老帖子 主题:分析PureMVC中的观察者模式运用
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-16
在这里给大家分享一下PureMVC中的观察者模式运用. 观察模式中有主题 ,观察者,通知.在PureMVC中 View充当主题的角色, Observer 当然充当观察者了,Notification 就充当命令通知了. 现在大家都知道PureMVC中观察者模式的角色分别是谁了,这样在去看就非常清晰了,但它的来胧去脉是怎么回事那? 在View中定义了一些方法,主要的方法: +registerObserver(in notificationName : String, in observer : IObserver) : void +notifyObservers(in notification : INotification) : void +registerMediator(in mediator : IMediator) : void +retrieveMediator(in mediatorName : String) : IMediator +removeMediator(in mediatorName : String) : void +hasMediator(in mediatorName : String) : Boolean 这个方法中有两个注册方法,registerObserver这个方法是注册Command的执行方法.在Control中有个registerCommand方法对其进行调用: public function executeCommand( note : INotification ) : void { var commandClassRef : Class = commandMap[ note.getName() ]; if ( commandClassRef == null ) return; var commandInstance : ICommand = new commandClassRef(); commandInstance.execute( note ); } public function registerCommand( notificationName : String, commandClassRef : Class ) : void { if ( commandMap[ notificationName ] == null ) { view.registerObserver( notificationName, new Observer( executeCommand, this ) ); } commandMap[ notificationName ] = commandClassRef; } registerMediator这个方法是注册视图,以便视图接收通知. 在Mediator中,既可以发送通知,也可以接收通知. Observer在构造方法,构造两个参数 public function Observer( notifyMethod:Function, notifyContext:Object ) { setNotifyMethod( notifyMethod ); setNotifyContext( notifyContext ); } notifyMethod 这个参数是其实是executeCommand方法。 Observer接收到通知后,执行方法: public function notifyObserver( notification:INotification ):void { this.getNotifyMethod().apply(this.getNotifyContext(),[notification]); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-08-07
注册后就存在一个Map中
是不是必须手工清理掉注册的对象? |
|
返回顶楼 | |
发表时间:2008-08-11
里面的类都是一些单例,所以里面只会存在一个注册的对象.
|
|
返回顶楼 | |