高质量C++/C编程指南-第10章-类的担当与组合(2)[VC/C++编程]
本文“高质量C++/C编程指南-第10章-类的担当与组合(2)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
10.2 组合
l 【法则10-2-1】若在逻辑上A是B的“一部份”(a part of),则不答应B从A派生,而是要用A和别的东西组合出B.
比方眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部份,所以类Head应当由类Eye、Nose、Mouth、Ear组合而成,不是派生而成.如示例10-2-1所示.
class Eye
{
public:
void Look(void);
};
class Nose
{
public:
void Smell(void);
};
class Mouth
{
public:
void Eat(void);
};
class Ear
{
public:
void Listen(void);
};
// 精确的计划,固然代码冗长.
class Head
{
public:
void Look(void) { m_eye.Look(); }
void Smell(void) { m_nose.Smell(); }
void Eat(void) { m_mouth.Eat(); }
void Listen(void) { m_ear.Listen(); }
private:
Eye m_eye;
Nose m_nose;
Mouth m_mouth;
Ear m_ear;
};
示例10-2-1 Head由Eye、Nose、Mouth、Ear组合而成
假如答应Head从Eye、Nose、Mouth、Ear派生而成,那么Head将自动具有Look、 Smell、Eat、Listen这些功效.示例10-2-2非常简短并且运行精确,但是这种计划办法倒是不对的.
// 功效精确并且代码简便,但是计划办法不对.
class Head : public Eye, public Nose, public Mouth, public Ear
{
};
示例10-2-2 Head从Eye、Nose、Mouth、Ear派生而成
一只公鸡用力地追打一只刚下了蛋的母鸡,你知道为什么吗?
因为母鸡下了鸭蛋.
很多程序员经不起“担当”的引诱而犯下计划错误.“运行精确”的程序不见得是高质量的程序,此处就是一个例证.
以上是“高质量C++/C编程指南-第10章-类的担当与组合(2)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |