⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imediator.as

📁 PureMVC框架
💻 AS
字号:
/*
 PureMVC - Copyright(c) 2006-08 Futurescale, Inc., Some rights reserved.
 Your reuse is governed by the Creative Commons Attribution 3.0 United States License
*/
package org.puremvc.as3.interfaces
{
	
	/**
	 * The interface definition for a PureMVC Mediator.
	 *
	 * <P>
	 * In PureMVC, <code>IMediator</code> implementors assume these responsibilities:</P>
	 * <UL>
	 * <LI>Implement a common method which returns a list of all <code>INotification</code>s 
	 * the <code>IMediator</code> has interest in.</LI>
	 * <LI>Implement a notification callback method.</LI>
	 * <LI>Implement methods that are called when the IMediator is registered or removed from the View.</LI>
	 * </UL>
	 * <P>
	 * Additionally, <code>IMediator</code>s typically:
	 * <UL>
	 * <LI>Act as an intermediary between one or more view components such as text boxes or 
	 * list controls, maintaining references and coordinating their behavior.</LI>
	 * <LI>In Flash-based apps, this is often the place where event listeners are
	 * added to view components, and their handlers implemented.</LI>
	 * <LI>Respond to and generate <code>INotifications</code>, interacting with of 
	 * the rest of the PureMVC app.
	 * </UL></P>
	 * <P>
	 * When an <code>IMediator</code> is registered with the <code>IView</code>, 
	 * the <code>IView</code> will call the <code>IMediator</code>'s 
	 * <code>listNotificationInterests</code> method. The <code>IMediator</code> will 
	 * return an <code>Array</code> of <code>INotification</code> names which 
	 * it wishes to be notified about.</P>
	 * 
	 * <P>
	 * The <code>IView</code> will then create an <code>Observer</code> object 
	 * encapsulating that <code>IMediator</code>'s (<code>handleNotification</code>) method
	 * and register it as an Observer for each <code>INotification</code> name returned by 
	 * <code>listNotificationInterests</code>.</P>
	 * 
	 * <P>
	 * A concrete IMediator implementor usually looks something like this:</P>
	 * 
	 * <listing>
	 *	import org.puremvc.as3.patterns.mediator.~~;
	 *	import org.puremvc.as3.patterns.observer.~~;
	 *	import org.puremvc.as3.core.view.~~;
	 * 
	 *	import com.me.myapp.model.~~;
	 *	import com.me.myapp.view.~~;
	 *	import com.me.myapp.controller.~~;
	 * 		
	 *	import mx.controls.ComboBox;
	 *	import mx.events.ListEvent;
	 * 
	 * public class MyMediator extends Mediator implements IMediator {
	 * 
	 * 		public function MyComboMediator( viewComponent:Object ) {
	 * 			super( viewComponent );
	 * 			combo.addEventListener( Event.CHANGE, onChange );
	 * 		}
	 * 		
	 * 		override public function listNotificationInterests():Array {
	 * 				return [ MyFacade.SET_SELECTION, 
	 * 						 MyFacade.SET_DATAPROVIDER ];
	 * 		}
	 * 
	 * 		override public function handleNotification( notification:INotification ):void {
	 * 				switch ( notification.getName() ) {
	 * 					case MyFacade.SET_SELECTION:
	 * 						setSelection(notification);
	 * 						break;
	 * 					case MyFacade.SET_DATAPROVIDER:
	 * 						setDataProvider(notification);
	 * 						break;
	 * 				}
	 * 		}
	 * 
	 * 		// Set the data provider of the combo box
	 * 		protected function setDataProvider( notification:INotification ):void {
	 * 			combo.dataProvider = notification.getBody() as Array;
	 * 		}
	 * 
	 * 		// Invoked when the combo box dispatches a change event, we send a
	 *      // notification with the
	 * 		protected function onChange(event:ListEvent):void {
	 * 			sendNotification( MyFacade.MYCOMBO_CHANGED, this );
	 * 		}
	 * 
	 * 		// A private getter for accessing the view object by class
	 *      protected function get combo():ComboBox  {
	 *         return view as ComboBox;
	 *      }
	 * 
	 * }
	 * </listing>
	 * 
	 * @see org.puremvc.as3.interfaces.INotification INotification
	 */
	public interface IMediator
	{
		
		/**
		 * Get the <code>IMediator</code> instance name
		 * 
		 * @return the <code>IMediator</code> instance name
		 */
		function getMediatorName():String;
		
		/**
		 * Get the <code>IMediator</code>'s view component.
		 * 
		 * @return Object the view component
		 */
		function getViewComponent():Object;

		/**
		 * Set the <code>IMediator</code>'s view component.
		 * 
		 * @param Object the view component
		 */
		function setViewComponent( viewComponent:Object ):void;
		
		/**
		 * List <code>INotification</code> interests.
		 * 
		 * @return an <code>Array</code> of the <code>INotification</code> names this <code>IMediator</code> has an interest in.
		 */
		function listNotificationInterests( ):Array;
		
		/**
		 * Handle an <code>INotification</code>.
		 * 
		 * @param notification the <code>INotification</code> to be handled
		 */
		function handleNotification( notification:INotification ):void;
		
		/**
		 * Called by the View when the Mediator is registered
		 */ 
		function onRegister( ):void;

		/**
		 * Called by the View when the Mediator is removed
		 */ 
		function onRemove( ):void;
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -