Есть ли название для этого дизайна / шаблона? - PullRequest
2 голосов
/ 27 июля 2011

У меня есть класс BoundingRectangle, класс Entity и класс World.Когда создается сущность, если это твердый объект, она регистрирует класс с именем CollisionData, который содержит BoundingRectangle и ссылку на сущность-владельца с классом World.

, то есть: world.registerCollisionData(new CollisionData(this.boundingRectangle, this))

Есть ли название для CollisionData?

Ответы [ 4 ]

1 голос
/ 27 июля 2011

Я думаю, что сам шаблон будет ближе всего к Шаблон посредника . Вместо Entity, напрямую связывающегося с другим Entity, Мир действует как посредник между этими Entities. CollisionData - это просто абстракция получения данных, которые вам понадобятся для обработки этой ситуации.

Вы можете получить более чистый результат, предоставив метод в Entity, например:

public BoundingRectangle getBoundingRectangle();

И затем, регистрация только Entity с помощью объекта World:

world.registerEntity(this);

Тогда мир просто использует entity.getBoundingRectangle(); для своей работы. Это также похоже на шаблон реестра . Ваш нынешний способ вполне приемлем, это просто может составить более ясную Диаграмму Последовательности того, что происходит (прокси-объект не нужен, чтобы связать их вместе), и он объединяет только два класса, а не три.

1 голос
/ 27 июля 2011

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

РЕДАКТИРОВАТЬ:

Только что нашел то же самое, см. ENCAPSULATED CONTEXTУзор

0 голосов
/ 27 июля 2011

Я бы сказал, что CollisionData действует как декоратор или, возможно, является частью более крупного композита .

0 голосов
/ 27 июля 2011

Это называется заводским шаблоном.

http://en.wikipedia.org/wiki/Factory_method_pattern

...