Показать сообщение отдельно
Старый 22.10.2012, 21:03
Deril_AS3 вне форума Посмотреть профиль Отправить личное сообщение для Deril_AS3 Найти все сообщения от Deril_AS3
  № 9  
Ответить с цитированием
Deril_AS3
 
Аватар для Deril_AS3

Регистрация: Oct 2012
Адрес: Hamburg
Сообщений: 22
hm...

В этой конкретной ситуации, я бы делал так:



Код AS3:
package temp {
import org.mvcexpress.mvc.Mediator;
 
public class BaseMediator extends Mediator {
 
	protected var baseView:IBaseInterface;
 
	override public function onRegister():void {
		// mediate IBaseIterface specific stuff.
	}
 
}
}
Код AS3:
package temp {
import org.mvcexpress.mvc.Mediator;
 
public class A1Mediator extends BaseMediator{
 
 
	private var _view:WiewA1;
 
	[Inject]
	public var proxyX:ProxyX;
 
	[Inject]
	public function set view(value:WiewA1):void {
		baseView = value;
		_view = value;
	}
 
	override public function onRegister():void{
		super.onRegister();
		// mediate ViewA1 specific stuff.
	}
 
}
}
Элегантное решение, и все функции находятся в правильных классов.

и использовать так:

Код AS3:
		mediatorMap.map(ViewA1, A1Mediator);
		mediatorMap.map(ViewA2Sub, A2Mediator);
		mediatorMap.map(ViewBSub, BMediator);
 
		...
 
		var testView:ViewA1 = new ViewA1();
		mediatorMap.mediate(testView);

Добавить view inject как интерфейс легко, но я не могу найти хороший практический пример где это необходимо(как функция, или просто для удобства).

Идея такова: каждый конкретный view должна иметь конкретный mediator.
Если view имеет суперклас - mediator может иметь также суперклас, если это нужно.

спасибо за комментарий!