Я бы не стал передавать ссылку на модель в представление.Более разобщенным подходом будет передача идентификатора модели представлению.Обеспечить доступ к идентификатору модели через геттер.В общем, вы хотите сохранить знание моделей вне представлений и знание представлений вне моделей.
Ниже приведен пример того, как класс контроллера может управлять отношениями между представлениями и моделями.
class View
{
public function View( modelId:int )
{
this._id = modelId;
}
public function get modelId():int { return this._id; }
protected function doSomething():void
{
dispatchEvent( new Event(Event.DOING_SOMETHING) );
}
}
class Controller
{
function init()
{
for each( model in models )
{
var view = new View( model.id );
view.addEventListener( Event.DOING_SOMETHING, onViewDoingSomething );
}
}
protected function onViewDoingSomething( event:Event ):void
{
if( event.target is View )
var view:View = event.target as View;
// -- do something with view.modelId here
}
}
Еще одна вещь, которую нужно учитывать, - это насколько велико приложение, которое вы создаете, и сколько людей будет над ним работать.При создании быстрого прототипа вы можете не заботиться о соблюдении строгих шаблонов ООП.Однако чем крупнее и сложнее становится проект, тем больше вероятность того, что фреймворк или конкретные шаблоны проектирования будут вам полезны.
Если вы заинтересованы в изучении фреймворка, обеспечивающего согласованные и гибкие проекты, подумайте о взгляде на ножки робота .