Mediator 中介 行为模式,用一个中介来封装一些列的对象操作。中介使得对象之间不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。
面向对象鼓励将行为分布到各个对象中。这种分布可能会导致对象见有许多连接。在最坏的情况下,每一个对象都知道其他的对象。在PureMVC中就是使用Mediator,来中介对象之间的操作,对象只要和Mediator通信就可以了。
我们就直接拿 PureMVC 框架的源代码作为例子:
IMediator.as
package org.puremvc.interfaces {
public interface IMediator {
function getViewComponent():Object;
function listNotificationInterests( ):Array;
function handleNotification( notification:INotification ):void;
}
}
Mediator.as
package org.puremvc.patterns.mediator {
import org.puremvc.interfaces.*;
import org.puremvc.patterns.observer.*;
import org.puremvc.patterns.facade.Facade;
public class Mediator extends Notifier implements IMediator, INotifier {
public static const NAME:String = 'Mediator';
public function Mediator( viewComponent:Object=null ) {
this.viewComponent = viewComponent;
}
public function getMediatorName():String {
return Mediator.NAME;
}
public function getViewComponent():Object {
return viewComponent;
}
public function listNotificationInterests():Array {
return [ ];
}
public function handleNotification( notification:INotification ):void {}
protected var viewComponent:Object;
}
}
这个具体Mediator有一个对viewComponent的引用,viewComponent通过发出时间来告诉Mediator,这个对象要干什么,然后Mediator把这个对象要做的事情转发出去,供Command 和 其他对象的Mediator去接受处理。