设为首页 加入收藏

TOP

3.4.7 混入类
2013-10-07 15:35:04 来源: 作者: 【 】 浏览:74
Tags:3.4.7 混入

3.4.7  混入类

混入(mix-in)类代表类之间的另一种关系。在C++(www.cppentry.com)中,混入类的语法类似于多重继承,但是语义完全不同。混入类回答"这个类还可以做什么"这个问题,答案经常以"-able"结尾。通过混入类,可以向类中添加功能而不需要保证完全的"是一个"关系。您可以把它当作一种分享(share-with)关系。

回到动物园示例,您可能想引入某些动物是可以"做宠物"这一概念。也就是说,有些动物可能不需要训练就可以作为动物园游客的宠物。您可能想让所有可以做宠物的动物支持"做宠物"行为。由于可以做宠物的动物没有其他的共性,因此您不想破坏已经设计好的层次结构,Pettable就是很好的混入类。

混入类经常在用户界面中使用。您可以说Image能够点击,而不需要说PictureButton类既是Image又是Button。您桌面上的文件夹图标可以是一个可以拖动的Image。软件开发人员总是喜欢弄一大堆有趣的形容词。

当考虑类的差异而不是代码的差异时,混入类以及超类的区别还有很多。因为范围有限,混入类通常比多重层次结构容易理解。Pettable混入类只是在已有类中添加了一个行为,Clickable混入类或许仅仅添加了"按下鼠标"以及"抬起鼠标"行为。此外,混入类很少会有庞大的层次结构,因此不会出现功能的交叉混乱。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇15.1.3 流式输出(1) 下一篇3.4.6 多重继承

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)