我应该在Flex应用程序中将重用的静态字符串常量存储在何处?

时间:2009-06-10 16:05:05

标签: flex actionscript-3 constants cairngorm

我有两个共享许多类的Cairngorm MVC Flex应用程序(同一个应用程序的完整版和精简版)。我已将这些类放入一个编译为SWC的Flex库项目中。两个应用程序都使用一些静态String常量。现在,我将它们存储在ModelLocator中:

package model
{
    [Bindable]
    public class ModelLocator
    {
        public static var __instance:ModelLocator = null;

        public static const SUCCESS:String = "success";

        public static const FAILURE:String = "failure";

        public static const RUNNING:String = "running";

        ...
    }
}

这似乎不是存储这些常量的最佳位置,特别是现在两个应用程序都使用它们,并且我已经将每个应用程序设置为拥有自己的ModelLocator类。另外,这不是ModelLocator类的目的。

在我的共享库中存储这些常量的好方法是什么?

我应该像这样创建一个类吗?:

package
{
    [Bindable]
    public class Constants
    {
        public static const SUCCESS:String = "success";

        public static const FAILURE:String = "failure";

        public static const RUNNING:String = "running";
    }
}

然后像这样引用它:

if (value == Constant.SUCCESS)
    ...

1 个答案:

答案 0 :(得分:13)

我会说按逻辑意义组织常量,而不是单个Constants类。

假设您将3显示为某种任务状态,并且您还有一些用作文件访问的错误代码(只是在这里制作内容):

public class TaskStates {
  public static const SUCCESS:String = "success";
  public static const FAILURE:String = "failure";
  public static const RUNNING:String = "running";
}

public class FileErrors  {
  public static const FILE_NOT_FOUND:String = "filenotfound";
  public static const INVALID_FORMAT:String = "invalidformat";
  public static const READ_ONLY:String = "readonly";
}

我发现这样可以更轻松地记录某些内容的预期值。而不是说“返回SUCCESS,FAILURE,RUNNING,......”,你可以说“返回一个TaskState。*值。”

你可以将所有这些放在一个包中用于常量,或者你可以将常量类放在与使用它们的类相同的包中。