我已将created a class用作我应用程序中所有商家信息的存储空间。该类允许我将对象“签名”到列表(可以通过sign()
方法动态创建,如下所示):
manager.sign(myObject, "someList");
这将元素的索引(使用它的唯一id)存储在新创建或以前创建的列表“someList”以及2D数组中的对象中。例如,我可能最终得到这个:
trace(_indexes["someList"][objectId]); // 0 - the object is the first in this list
trace(_instances["someList"]); // [object MyObject]
该课程还有另外两种方法:
find(signature:String):Array
此方法通过slice()
返回一个数组,其中包含使用给定签名签名的所有元素。
findFirst(signature:String):Object
此方法只返回给定列表中的第一个对象
因此,为了检索myObject,我可以去:
trace(find("someList")[0]);
or
trace(findFirst("someList"));
最后,有一个unsign()
函数将从给定的列表中删除一个对象。这个功能基本上是:
pop()
的结果存储在指定列表中的变量。pop()
'd项替换指定的对象。pop()
'd项的索引。通过这一切,使用unsign()
将从任何大小的列表中快速删除对象。
现在这一切都很好,但是我有一些想法让我觉得这有多好?我的意思是能够在整个应用程序中轻松列出,删除和访问我想要的任何列表,比如这很棒 - 但是有没有捕获?
我有几个开始的想法是:
任何见解?
我上传了这个课程,以防上述内容没有多大意义:https://projectavian.com/AviManager.as
答案 0 :(得分:1)
您的解决方案看起来非常可靠。如果您希望将其修改为更具可扩展性并处理权限管理,则可以考虑将所有这些单独索引的属性移动到AV元素的值对象。您可以在VO内部执行“签名”和“取消签名”等操作,或检查访问权限。您的管理类可以监视这些VO的集合,传递它们,执行方法调用,并且对象将以更易读的格式保存状态。
但实际上,这正在进入编码风格的讨论。你的方法有效,而且效率不是特别低。只需确保代码可读,封装和可扩展,您就可以了。