Flash As3 Game: Классный вопрос - PullRequest
       2

Flash As3 Game: Классный вопрос

2 голосов
/ 19 ноября 2010

Я делаю игру в as3, используя flash development и flash cs5.Все объектно-ориентировано.Мне было интересно, должен ли я иметь один класс «шлюза», который имеет ссылку на свойство для всех экземпляров других классов, и я просто передаю этот класс шлюза новым объектам, чтобы они имели доступ к каждому классу.Вот так:

 var block:Block = new Block(gateway);

 //In the block class:
 this.gateway.player.setHealth(100);
 //Or:
 this.gateway.input.lock();

Это как шаблон синглтона или что-то?Должен ли я сделать это?

Ответы [ 3 ]

2 голосов
/ 19 ноября 2010

Я использовал эту идею раньше. Я использовал это как модель. dataModel - или эффективная основа, в которой хранятся ваши объекты - или ссылки на ваши объекты. Это полезно, так как вы всегда можете найти что-то, не проходя классы.

Я использовал его как одиночку - поэтому вы не боитесь создать новую версию вашей модели данных и ссылаться на пустые объекты. Кинда мешает тебе часами чесать голову. Это будет выглядеть примерно так:

package com.strangemother.models.DataModel
{
    private static var _dataModel:DataModel;
    /**
    an example of storing you items.
    */
    public var character:Character;

    public static function getInstance():DataModel
    {


     if(!_dataModel)
        {
  _dataModel= new DataModel(SingletonLock); 
  return _dataModel;

     }

 public function DataModel(lock:Class)
 {
  if(!lock is SingletonLock)
  {
   throw new Error("DataModel is a singleton. Use DataModel.getInstance() to use.");
  }
 }
}

Добавление @ AttackingHobo:

this is a one ( 1 ) this is the letter L lowercase ( l )
1 голос
/ 19 ноября 2010

Может быть хорошим подходом, чтобы быстро что-то попробовать, но в долгосрочной перспективе этот объект шлюза станет настолько гигантским, а отношение между различными объектами настолько большим, что он упадет под собственным весом.

Кроме того, одной из точек ориентации объекта является инкапсуляция доступа частей кода только к тем объектам, которым это требуется.

0 голосов
/ 19 ноября 2010

Концепция называется инверсия управления .Похоже, вы создали сервисный локатор .Существуют альтернативные способы реализации инверсии управления, такие как внедрение зависимостей .У Мартина Фаулера есть отличная статья по всей концепции, вы должны прочитать ее, а затем решить для себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...