2009-06-10 6 views
2

J'ai deux applications Cairngorm MVC Flex (une version complète et une version allégée de la même application) qui partagent de nombreuses classes. J'ai mis ces classes dans un projet de bibliothèque Flex qui compile comme un SWC. Les deux applications utilisent des constantes String statiques. En ce moment, je suis dans le stockage de ces ModelLocator:Où dois-je stocker les constantes de chaînes statiques réutilisées dans l'application Flex?

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"; 

     ... 
    } 
} 

Cela ne semble pas être le meilleur endroit pour stocker ces constantes, surtout maintenant qu'ils sont utilisés par les applications, et je configurer chaque application avoir sa propre classe ModelLocator. De plus, ce n'est pas le but de la classe ModelLocator.

Quel serait un bon moyen de stocker ces constantes dans ma bibliothèque partagée?

Si je viens de créer une classe comme ça ?:

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

     public static const FAILURE:String = "failure"; 

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

puis référence comme ceci:

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

Répondre

13

Je dirais que l'organisation des constantes de sens logique, au lieu d'un seul Classe de constantes

Supposons que vous avez 3 vous montrer comme une sorte d'état de la tâche, et vous avez un peu plus qui sont utilisés comme codes d'erreur pour l'accès aux fichiers (juste faire des choses ici):

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"; 
} 

Je trouve cela Il est plus facile de documenter les valeurs attendues pour quelque chose. Au lieu de dire "Renvoie SUCCESS, FAILURE, RUNNING, ...", vous pouvez simplement dire "Renvoie l'une des valeurs TaskState. *"

Vous pouvez mettre tous ces éléments dans un seul package pour les constantes, ou vous pourrait avoir les classes constantes vivent dans le même paquet que les classes qui les utilisent

+0

Bonnes idées Merci. –

Questions connexes