«Главный объект» должен существовать без вызовов базы данных - PullRequest
0 голосов
/ 31 августа 2010

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

У меня есть ситуация, когда у меня такая структура ...

- Template
  - Data(ICollection<Statistics>)

  - Character: Template
    - Data (ICollection<Statistics>)

Для уточнения ... Предположим, что у каждого персонажа есть свойство «Здоровье». Теперь по умолчанию «Здоровье» - 15.

Теперь давайте предположим, что каждый символ начинается с этого. Как персонаж в течение своей жизни, он может добавить к «Здоровью» новые значения. Но им все еще нужно сохранить ссылку по умолчанию.

Теперь, 'Character' наследует значения по умолчанию от 'Template', но каждый символ будет иметь свой собственный набор данных, который добавляет значения по умолчанию. Необработанное наследование не работает, потому что элемент добавляется, он не перезаписывается. Оригинальные значения по умолчанию все еще должны существовать.

Я могу решить это так ...

- Character
 - Template
 - Data (ICollection<Statistic>)

Но это избыточно для меня. Это требует много дополнительных вызовов базы данных. По сути, каждый вызов элемента должен выполнять один и тот же код дважды, поскольку он также должен создавать объект Template.

Есть ли более логичный способ сделать это?

1 Ответ

1 голос
/ 31 августа 2010

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

abstract class Template { 
    ICollection<Statistics> DefaultData;
}

class CharacterTemplate : Template { 
    private CharacterTemplate() {
        //appropriate data initialization
    }

    private static readonly CharacterTemplate _instance = new CharacterTemplate();
    public static Template Instance { get { return _instance; } }
}

class Character { 
    Template template = CharacterTemplate.Instance; /* CharacterTemplate */
    ICollection<Statistics> Data ;
}

Предложите разработчикам шаблонов реализовать шаблон Singleton, и вам придется инициализировать его из базы данных не более одного раза.

Для фона на шаблоне синглтона, проверьте википедию: http://en.wikipedia.org/wiki/Singleton_pattern#C.23

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