Можно ли в RoboticLegs создать медиатор без привязки к view?

Доброго дня.
В энтерпрайзе решили начать проект на RL2 и собственно такой вопрос. Можно ли создавать медиатор без привязки к к клипу?
Конкретно пример: У меня есть несколько планет, на каждой из планет "живу" здания\персонажи...
В каждый момент времени мне нужно отображать на экране только одну планету, в остальное время мне не нужны клипы для всех персонажей на всех планетах. Но при этом мне нужно что бы они существовали внутри контекста, ловили сообщения.
В домашнем проекте я применял такую структуру:

// Любой объект на поверхности планеты.
interface IPlanetActor {
    function register();
}

// например персонаж, который бегает по планете
// По всем признакам он является медиатором: В него инжектятся модели и сигналы,
// в момент регистрации он подписывается на сигналы и начинает взаимодействовать с окружением,
// до тех пор пока не "решит удалиться", вызвав kill().
class Character implements IPlanetActor {
    [inject] // какие-то зависимости
    
    // рассылается при добавлении\удалении в мир
    [inject] public var signalCharacterAdded: SignalCharacterAdded;
    [inject] public var signalCharacterRemoved: SignalCharacterRemoved;
    
    // ловит что бы удалиться вместе с планетой
    [inject] public var signalPlanetRemoved: SignalPlanetRemoved;

    public function register() {
        // Подписываемся на сигналы
        signalCharacterAdded.dispatch(this);
    }

    protected function kill() { //вызывется по желанию самого персонажа или при получении SignalPlanetRemoved
        // удаляем подписи на сигналы
        signalCharacterRemoved.dispatch(this);
    }
}

class Planet {
    [inject] public var injector: Injector; 

    // рассылает при уничтожении планеты
    [inject] public var signalPlanetRemoved: SignalPlanetRemoved; 

    [inject] public var signalCharacterAdded: SignalCharacterAdded;
    [inject] public var signalCharacterRemoved: SignalCharacterRemoved;
    
    private var charactersList: Vector.<Character>; // < заполняется на основании signalCharacterAdded, signalCharacterRemoved

    public function registerPlanetActor(actor: IPlanetActor): void {
        injector.injectInto(actor);
        actor.register();
    }
}


В момент выбора планеты, я уже создаю вьюху поверхности, запрашиваю список персонажей, на их основе создаются CharacterView+CharacterMeadiator, которые повторяют все за Character.

Но не уверен что такой подход правильный с точки зрения Rl2. Для домашнего проекта меня это полностью устраивает, но тащить ли такое в продакшен?
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы