这个设计/图案有名字吗?

时间:2011-07-27 03:04:37

标签: design-patterns

我有一个BoundingRectangle类,一个Entity类和一个World类。创建实体时,如果它是一个实体对象,它会注册一个名为CollisionData的类,该类包含一个BoundingRectangle和一个对所有者实体与World类的引用。

即: world.registerCollisionData(new CollisionData(this.boundingRectangle, this))

是否有CollisionData的名称?

4 个答案:

答案 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)

我想说CollisionData要么充当decorator,要么可能是较大composite的一部分。