PureMVC 학습 노트 1

2122 단어 Flex

1. View는 Mediator 객체에 대한 참조를 저장합니다.Mediator 객체에서 구체적인 뷰 구성 요소(View Component, 예를 들어 Flex의 DataGrid 구성 요소)를 조작합니다. 이벤트 감청기를 추가하고 Notification을 보내거나 수신하여 뷰 구성 요소의 상태를 직접 바꾸는 것을 포함합니다.이렇게 하면 보기와 제어의 논리를 분리할 수 있다.View로 Mediator를 등록하면 Mediator의listNotifications 방법이 호출되어 Mediator 객체가 관심을 가지는 모든 Notification을 배열로 반환합니다.이후 시스템의 다른 역할이 같은 이름의 Notification (알림) 을 보낼 때, 이 알림에 관심을 가진 Mediator는handle Notification 방법을 호출하고 Notification을 매개 변수로 방법에 전달합니다.
 
public function registerMediator( mediator:IMediator ) : void
{
	// do not allow re-registration (you must to removeMediator fist)
	if ( mediatorMap[ mediator.getMediatorName() ] != null ) return;
	
	// Register the Mediator for retrieval by name
	mediatorMap[ mediator.getMediatorName() ] = mediator;
	
	// Get Notification interests, if any.
	var interests:Array = mediator.listNotificationInterests();

	// Register Mediator as an observer for each of its notification interests
	if ( interests.length > 0 ) 
	{
		// Create Observer referencing this mediator's handlNotification method
		var observer:Observer = new Observer( mediator.handleNotification, mediator );

		// Register Mediator as Observer for its list of Notification interests
		for ( var i:Number=0;  i<interests.length; i++ ) {
			registerObserver( interests[i],  observer );
		}			
	}
	
	// alert the mediator that it has been registered
	mediator.onRegister();	
}

 
2. Controller는 모든 Command 및 Notification 매핑을 저장합니다.Command는 무상태이며 필요할 때만 생성됩니다.
 
 
public function registerCommand( notificationName : String, commandClassRef : Class ) : void
{
	if ( commandMap[ notificationName ] == null ) {
		view.registerObserver( notificationName, new Observer( executeCommand, this ) );
	}
	commandMap[ notificationName ] = commandClassRef;
}

public function executeCommand( note : INotification ) : void
{
	var commandClassRef : Class = commandMap[ note.getName() ];
	if ( commandClassRef == null ) return;

	var commandInstance : ICommand = new commandClassRef();
	commandInstance.execute( note );
}

좋은 웹페이지 즐겨찾기