嗯,所以我的标题有问题,但这是我最好的镜头!
情况:我正在编写一个库,以便我可以轻松地在未来的项目中重用我的代码,而无需考虑内部结构。该库应该能够在运行时创建对象,然后通过方法访问它们以执行任务。所有这些都通过使用易于使用的标识符来实现。
像这样的东西:
class Manager
{
Object[] Foo;
// Other stuff + initialization logic
CreateFoo(/*Some parameters here + Identifier*/)
{
// Create a new Foo here;
}
AddBar(/*Moar parameters + Foo identifier*/)
{
Foo[StoID(identifier)].AddBar(/*Params*/);
}
}
class Software
{
Software()
{
// Create a lot of Foos.
while(1)
{
manager.CreateFoo(/*Params*/);
}
}
void OhHai()
{
// This method can be called a LOT (100 times per update) or not at all
// depending on circumstances.
manager.AddBar(/*Params*/);
}
}
免责声明:不,这实际上不是我的代码愚蠢!
问题:我可能很想访问我的 Foo 对象,性能很重要,但可管理性和易用性也很重要。例如,我的第一个想法是使用字符串和数组索引来创建一个小型的动态转换库。然而,这将意味着大量的迭代 - 取决于创建了多少 Foos - 和字符串比较。
例子:
class Software
{
Manager manager;
Software()
{
manager.CreateFoo("Lol", /*Parameters*/);
manager.CreateFoo("Cat", /*Parameters*/);
}
void OhHai()
{
manager.AddBar("Lol", /*Parameters 1*/;
manager.AddBar("Cat", /*Parameters 2*/;
}
}
用索引直接访问 Foo 的性能肯定比先把字符串转为 id 好很多。然而,字符串很容易由人类管理,因此易于使用将是完美的。
我要问的是:这些事情通常是如何处理的,有人对我应该如何设计这个有建议吗?
编辑:基本上我试图找到一种简单的方法让我的经理知道要向哪个 Foo 添加 Bar !:)