我有两个共享许多类的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)
...
答案 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。*值。”
你可以将所有这些放在一个包中用于常量,或者你可以将常量类放在与使用它们的类相同的包中。