这与特定的设计模式无关。
我认为这样一个问题(尤其是在面试中)的意义在于你充实了各种设计选项。例如,让我们从
class AbstractPlayer
{ /* stuff */ };
class Batsman : public AbstractPlayer
{ /* stuff */ };
class Bowler : public AbstractPlayer
{ /* stuff */ };
class AllRounder : public AbstractPlayer
{ /* stuff */ };
那你可以去
class Team
{
public:
void addPlayer(Batsman player);
void addPlayer(Bowler player);
void addPlayer(AllRounder player);
/* stuff */
};
也可以是
class Team
{
public:
void addBatsman(AbstractPlayer player);
void addBowler(AbstractPlayer player);
void addAllRounder(AbstractPlayer player);
/* stuff */
};
无论如何,你必须决定是否
- 将这些玩家存储在一个
AbstractPlayers 列表中,并计算不同整数属性中不同玩家类型的数量或
- 将播放器存储在三个不同的动态长度列表中
到目前为止一切顺利,现在假设您以某种方式拥有Team 类中的玩家类型数量。约束在哪里?它们可以在构造函数中设置为三个最大计数
Team::Team(int maxBatsmanCount, int maxBowlerCount, int maxAllRounderCount) { ... }
或者可能有某种 setter 方法(如果对于一个 Team 实例,数字可能会改变)
Team::adjustConstraints(int maxBatsmanCount, int maxBowlerCount, int maxAllRounderCount) { ... }
还有更多我能想到的方法。约束类怎么样?但这取决于Team 类的要求。