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

Eri*_*air 2 apache-flex constants cairngorm actionscript-3

我有两个共享许多类的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";

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎不是存储这些常量的最佳位置,特别是现在它们被两个应用程序使用,并且我已经将每个应用程序设置为拥有自己的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";
    }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样引用它:

if (value == Constant.SUCCESS)
    ...
Run Code Online (Sandbox Code Playgroud)

Her*_*rms 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";
}
Run Code Online (Sandbox Code Playgroud)

我发现这样可以更容易地记录某些内容的预期值.而不是说"返回SUCCESS,FAILURE,RUNNING,......",你可以说"返回TaskState.*值之一".

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