所有数据存储都有一个庞大的类吗?

时间:2011-11-14 04:37:48

标签: actionscript-3 oop

我已将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]

该课程还有另外两种方法:

  1. find(signature:String):Array
    此方法通过slice()返回一个数组,其中包含使用给定签名签名的所有元素。

  2. findFirst(signature:String):Object
    此方法只返回给定列表中的第一个对象

  3. 因此,为了检索myObject,我可以去:

    trace(find("someList")[0]); or trace(findFirst("someList"));

    最后,有一个unsign()函数将从给定的列表中删除一个对象。这个功能基本上是:

    1. pop()的结果存储在指定列表中的变量。
    2. 使用存储的索引快速用pop()'d项替换指定的对象。
    3. 删除指定对象的存储索引,并更新pop()'d项的索引。
    4. 通过这一切,使用unsign()将从任何大小的列表中快速删除对象。

      现在这一切都很好,但是我有一些想法让我觉得这有多好?我的意思是能够在整个应用程序中轻松列出,删除和访问我想要的任何列表,比如这很棒 - 但是有没有捕获?

      我有几个开始的想法是:

      1. 到目前为止,我还没有实现对私有列表的支持,只能通过给定的类访问。
      2. 内存 - 这似乎没有内存效率。然后,也没有为我想要单独存储的所有内容创建数组。看起来......更大..不知何故。
      3. 任何见解?

        我上传了这个课程,以防上述内容没有多大意义:https://projectavian.com/AviManager.as

1 个答案:

答案 0 :(得分:1)

您的解决方案看起来非常可靠。如果您希望将其修改为更具可扩展性并处理权限管理,则可以考虑将所有这些单独索引的属性移动到AV元素的值对象。您可以在VO内部执行“签名”和“取消签名”等操作,或检查访问权限。您的管理类可以监视这些VO的集合,传递它们,执行方法调用,并且对象将以更易读的格式保存状态。

但实际上,这正在进入编码风格的讨论。你的方法有效,而且效率不是特别低。只需确保代码可读,封装和可扩展,您就可以了。