【发布时间】:2014-02-16 20:27:33
【问题描述】:
您应该对复杂数据类型使用访问器吗?这是一个例子:
假设我有一个 Player 类,里面有一个 Sprite 对象。假设Sprite 对象有一个setPosition() 访问器方法。现在假设我想通过播放器调用该方法,所以我在Player 中创建Sprite 对象的访问器。
class Player
{
public:
const Sprite& getSprite() const;
private:
Sprite sprite;
}
现在假设我创建了一个“玩家”对象,我如何在sprite 上调用setPosition?我不能只说playerObject.getSprite().setPosition();,因为Sprite 引用getSprite() 方法返回的是const。
考虑到sprite 对象对它的所有成员都有保护,我是否应该在这种情况下将sprite 对象公开?或者这是一种不好的做法,我确实需要使用访问器?
【问题讨论】:
-
您应该考虑SOLID 原则。从代码的模块化和可维护性的角度来看,您的问题的答案可能不是您明确要求的。首先,您可能希望将游戏逻辑与表示(精灵等)分开
标签: c++ accessor data-protection