Это общий вопрос, я не знаю, относится ли он к программированию или StackOverflow.
Я пишу небольшую симуляцию. Не углубляясь в его детали, учтите, что здесь задействованы многие виды идентичностей. Они соответствуют объекту, так как я использую язык ООП.
- Есть Парни , которые населяют мир, моделируемый
- Есть Карты
- На карте много Лотов , которые представляют собой участки земли с некоторыми характеристиками
- Есть Племен (ребята принадлежат к племенам)
- Существует универсальный класс с именем Position для определения местоположения элементов
- Боты контролируют племена, которые перемещают парней вокруг
- Существует Мир , который представляет симулированный мир
и т. Д.
Если бы моделируемый мир был заложен в качестве базы данных, объекты были бы таблицами с большим количеством ссылок, но в памяти я должен использовать другую стратегию. Так, например, у Племени в качестве свойства есть массив Парней, в мире есть массив Ботов, Племен, Карт. Карта имеет словарь, ключ которого - позиция, а значение - лот. У парня есть позиция, в которой он стоит.
То, как я устанавливаю такие связи, в значительной степени произвольно. Например, у меня может быть массив парней в мире, или массив парней за лот (парни стоят на клочке земли), или массив парней на бот (с парнями, контролируемыми ботом).
Для этого я также должен обойти множество объектов. Например, бот должен иметь информацию о карте и парнях противника, чтобы решить, как их перемещать.
Как уже говорилось, в базе данных я бы имел таблицу Guys, связанную с таблицей Lots (с указанием ее позиции), с таблицей Tribe (с указанием, к какому племени она принадлежит), и поэтому было бы также легко запросить "All" ребята в позиции [1, 5] ". «Все парни из племени 123». «Все парни, контролируемые ботом B, стоящие на лоте b34, не принадлежащие к племени 456» и т. Д.
Я работал с API, где для получения простейшей информации вам нужно было создать экземпляр CustomerContextCollection и передать его в CustomerQueryFactory, чтобы вернуть CustomerInPlaceQuery ... Когда люди критикуют ООП и приводят подробные абстракции, которые скоро пахнут смешно , это то, что я имею в виду. Я хочу избегать таких вещей и необходимости использовать глубокие абстракции и (анти-паттерн) абстрактные контексты.
Вопрос заключается в следующем: каков предпочтительный, чистый способ управления объектами и коллекциями объектов, которые тесно связаны между собой несколькими способами?