这是我的代码:
class Soldier {
public:
Soldier(const string &name, const Gun &gun);
string getName();
private:
Gun gun;
string name;
};
class Gun {
public:
void fire();
void load(int bullets);
int getBullets();
private:
int bullets;
}
我需要通过 Soldier 对象调用 Gun 的所有成员函数。就像是:
soldier.gun.fire();
or
soldier.getGun().load(15);
那么哪一种设计更好呢?将枪对象隐藏为私有成员并使用 getGun() 函数访问它。或者使其成为公共成员?或者我可以封装所有这些函数,这会使实现变得更加困难:
soldier.loadGun(15); // calls Gun.load()
soldier.fire(); // calls Gun.fire()
那么您认为哪一款最好呢?
我想说选择第二个选择:
soldier.loadGun(15); // calls Gun.load()
soldier.fire(); // calls Gun.fire()
最初需要做更多的工作,但随着系统变得越来越复杂,你可能会发现士兵在开枪之前和之后会想做其他事情(也许检查他们是否有足够的弹药,然后在开枪前尖叫“死吧!!” ,然后嘟囔“那很受伤”,然后检查是否需要重新加载)。它还向士兵类别的用户隐藏了枪支到底如何发射的不必要的细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)