Задать вопрос
@nskaskyou

Как правильно использовать патерн Creator (GRASP)?

Добрый день.

Пытаюсь делать игру по всем правилам ООП и столкнулся с недопонимаем патерна Creator

У меня есть планета.
Внутри планеты инстанцируются:
несколько видов ресурсов, координаты, название, несколько типов построек, несколько типов технологий, список модификаторов

Я правильно понял что планета должна иметь +-10 параметров для конструктора?

Просто такими темпами у меня вся игра превратиться в один класс, который создает все остальные классы, что равно классу с конструктором с диким количеством параметров и диким количеством методов.
Рассматриваем только домен без баз данных, фреймворков итд

Нормальный ход мыслей или я где то что то недопонял?

Спасибо
  • Вопрос задан
  • 97 просмотров
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
Рассматриваем только домен без баз данных

и как ты собираешься данные хранить?

Я правильно понял что планета должна иметь +-10 параметров для конструктора?

зависит от того как хранить эти данные: например, если это cвязанные ActiveRecord/ORM модели, то достаточно передать id планеты.

Oбъекты должны создаваться внутри класса только если объекты данного класса нигде больше не используются.
В остальных случаях используются Factory/Builder классы и DI контейнеры.
Ответ написан
Комментировать
vitaly_74
@vitaly_74
К сожалению вы уже отошли от концепции ООП, ООП - это не прямое описание объектов, т.е. это не прямое моделирование объектов. Говоря об ооп мы говорим об объекте. Объект, с технической точки зрения - это сущность которая имеет свое поведение и состояние (по другому это называется инкапсуляция). Чтобы правильно спроектировать объект нужно понять что он должен делать, какие обязанности выполнять, или например мы должны понять что мы хотим, чтобы объект для нас сделал. Заметьте я не говорю что мы хотим узнать от объекта, или что то от него получить, а говорю, что мы хотим чтобы сделал объект (т.е не отдавал нам данные, а что либо сделал).
следовательно, если ваша планета ничего не делает. и вам от нее ничего не требуется, а нужен ли вам такой объект в коде? Но если она что то делает - значит можно подумать о конструкторе, эмпирически есть правило (негласное) если конструктор принимает более 4-5 аргументов значит вы делаете что то не так.
моделировать сам мир и сами объекты (имею ввиду описание) нужно, на мой взгляд в реляционной или иной бд.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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