我有一个BoundingRectangle类,一个Entity类和一个World类。创建实体时,如果它是一个实体对象,它会注册一个名为CollisionData的类,该类包含一个BoundingRectangle和一个对所有者实体与World类的引用。
即:
world.registerCollisionData(new CollisionData(this.boundingRectangle, this))
是否有CollisionData的名称?
答案 0 :(得分:1)
我认为这是关注点和简单封装的分离,而不是任何特定的模式。所以CollisionData只是封装了有关边界矩形和底层实体的信息,这样Entity就不会直接知道Bound Region。
编辑:
刚刚找到相同的内容,请参阅ENCAPSULATED CONTEXT Pattern
答案 1 :(得分:1)
我认为模式本身最接近Mediator Pattern。世界不是Entity
直接与另一个Entity
进行沟通,而是充当Entities
之间的调解者。 CollisionData
只是获取处理这种情况所需数据的抽象。
通过在Entity
中提供方法,您可以获得更纯粹的结果:
public BoundingRectangle getBoundingRectangle();
然后,仅使用Entity
对象注册World
:
world.registerEntity(this);
然后,世界只使用entity.getBoundingRectangle();
来完成它的工作。这也类似于Registry Pattern。你当前的方式是完全可以接受的,这可能会使一个更清晰的序列图显示正在发生的事情(没有代理对象需要将两者结合在一起),并且它只耦合两个类而不是三个。
答案 2 :(得分:0)
答案 3 :(得分:0)