当谈到属性列表时,我的意思是存储一个类的附加信息的通用列表。你将如何实现属性列表?
最简单的情况:
一个班有一个std::map<std::string, std::string>
。第一个字符串命名属性(如"Color"
),第二个字符串描述该值(如"Yellow"
)。
在本例中,使用这些属性的另一个类需要检查映射中是否存在某个特定的属性名称,然后解析该值。
但是,在谈论性能时,这不是最好的概念。
你将如何实现这样一个属性列表?
是否有任何设计模式或库只是做这样的事情?
我特别感兴趣的是C++ - 这样做的方式,但是如果有独立于语言的解决方案,请发布它们。
在类需要动态属性且用户不想为每个属性继承的情况下,可以使用属性列表。
是否有帮助,你可以检查我的有关该主题的其他问题:
Attributelists or inheritance jungle?
编辑:
当然,我忘了一些资料(多亏了注释):
的属性可以被应用到对象。对于同一类的对象可能有不同的属性。对象所具有的属性可能会发生变化(值可能会更改,可能会添加/删除属性)
希望这可以让我们更清楚一点。
这些“属性”是每个类还是它们是每个对象?属性在运行时可能会发生变化吗?你打算如何使用属性?这是一个有趣的问题,但是你没有详细说明属性列表的要求。 – 2010-10-19 06:44:33
在硅片的权利 - 你设计这个基于你的实际要求重新运行的灵活性,内存使用情况,性能等..它可能是一个枚举/字符串/ ints/boost的任何地图:: boost :: any,variants,abstract base类,等等,或者如果你认为你之前关于在这样的“属性列表”和继承之间进行选择的问题是相关的,那么它意味着需求甚至是模糊的。 – 2010-10-19 07:05:43