Показать сообщение отдельно
  #9 (permalink)  
Старый 01.02.2013, 13:42
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Цитата:
смотря в каких случаях. Может конструктор создает вспомогательные объекты, необходимые для работы app.
Синглетоны там разместить можно, обьекты вроде конфигов, но неболее.

собственно пример как можно связать контролёры и модели в MVP,
тут реализовано сразу два подхода, app.Model является доступной сразу для двух контролёров
в тоже время у каждого контролёра есть своя модель.

профит при исчезнавении контролёра модель исчезнет вместе с ним, к томуже неймспейс незахламлён посторонним мусором и содержит только классы.

Это неединственный подход, есть и другие которые мне нравятся неменьше.


//абстрактные классы с общим для всех контролёров функционалом

class("app.Controlller",{
//бла бла
})

// модель
class("app.Model",{
//бла бла
})

//реальные классы экземпляры которых мы будем создавать

//контролёр1
class("app.controller1",{
     extend:"app.controller",
     init:function(param){
        //ссылка на модель
        this.model1=param.model;

        //экземпляр модели существующий только внутри контролёра 
        this.model2=app.myModel1({
        });
    }

//бла бла
})

//контролёр2
class("app.controller2",{
    extend:"app.controller",
    init:function(param){
        //ссылка на модель
        this.model1=param.model;

        //экземпляр модели существующий только внутри контролёра 
        this.model2=app.myModel1({
        });
    }
    //бла бла
})

//модель
class("app.myModel",{
    extend:"app.Model"
    //бла бла
})

//модель для внутреннего использования в классе контроллер 1
class("app.myModel1",{
    extend:"app.Model"
    //бла бла
})

//модель для внутреннего использования в классе контроллер 2
class("app.myModel2",{
    extend:"app.Model"
    //бла бла
})


//в этой функции инициализируется приложение
$(function(){

    // общая модель для двух контролёров
    var myModel= new app.myModel({
        //инициализация
    });

    // контролёр 1    
    var contr1 = new app.controller1({
        model: myModel
    })

    // контролёр 2
    var contr2 = new app.controller2({
        model: myModel        
    })

})
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 08.02.2013 в 15:10.
Ответить с цитированием