首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有保险杠标签的汽车是汽车的子类吗?

带有保险杠标签的汽车是汽车的子类吗?
EN

Stack Overflow用户
提问于 2011-03-04 16:23:31
回答 5查看 803关注 0票数 6

我不是OOPS和/或设计模式的专家。

我遇到过这样的情况:带有保险杠标签的汽车是汽车的子类吗?

如果不是,那么我如何向对象的实例添加动态属性?例如,一辆汽车,一辆带有保险杠贴纸的汽车等。

并不是所有的车都有保险杠贴纸。可以添加一个保险杠贴纸,甚至可以添加多个保险杠贴纸。我不能实现一个贴纸与汽车,afaik,实现我将迫使我添加贴纸。汽车上的保险杠贴纸是继汽车(对象?)之后出现的一种新特性。被创建了。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-04 16:51:52

对于这样的情况,您可以使用Decorator Design Pattern。它将允许你“添加动态属性到一个对象的实例”,你可以添加任何数量的贴纸或任何其他属性,通过“装饰”你的car类,在所有可能的组合中。

票数 7
EN

Stack Overflow用户

发布于 2011-03-04 16:43:21

您正在讨论的Car的更改是动态属性。就我个人而言,我会在Car类中实现一个Accessories集合,其中一个是BumperSticker。

然后,您可以添加和删除附件,而不必为所有可用选项创建Car子类。

如果你沿着继承路线走下去,想想当一辆车有一个BumperSticker和搅拌器时的情况,你会有多重继承,这在C++中是不受欢迎的,在其他语言中是不可用的。

票数 2
EN

Stack Overflow用户

发布于 2011-03-04 16:29:38

如果保险杠贴纸在您的情况下很常见,您可以设置一个布尔值属性(true/false)或一个字符串(如果您的情况就是这样)。

如果保险杠贴纸是复杂的它自己的一类,也许汽车应该实现贴纸?(这里我指的是Java中的实现)

至于动态,与汽车相关的属性数据库表可以接受吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5191301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档