OO设计 - 对象向类间询问间接持有它的问题

ran*_*dom 5 oop encapsulation

我想知道一个对另一个对象提出问题的对象是否是"坏"设计.例如...

要求:字符(对象)在网格上移动.当它试图移动到另一个位置时,它需要知道该位置是否已经被阻挡它的东西占据,或者该网格的那部分是否完全无法访问.(注意角色本身需要知道).

在应用程序中,状态持有tilemanager和charactermanager.tilemanager知道哪些瓷砖是可访问的,哪些不是.角色管理员知道角色的瓦片位置.

字符从状态调用函数是否合理,比如说AuthorizeMovement,它确定是否可以通过其TileManager和CharacterManager进行移动,如果是,则返回true,否则返回false?

这违反了任何重要原则,导致路上的麻烦吗?

显然,这是一般化的,并且被理解为了解问题所必需的.

Jas*_*ary 1

我不认为有什么问题。好的面向对象设计有很多原则。但其核心有四大要素:封装、继承、多态性和抽象。此外,您还需要高内聚和低耦合。这意味着您的对象/类可以适合任何地方,并且不依赖于特定的实现或类。

话虽如此,听起来您已经使用上面的内容来封装运动,并且角色将它们抽象为单独的类。所以你的角色类不会直接修改棋盘,如果是的话那就不好了。

随着您对问题有了更深入的了解,您始终可以重构代码以改进您的设计,以利用其他原则。