2010-12-06 19 views
1

j'ai un défi:Messages en java

Imaginez que vous avez un ensemble de messages comme celui-ci:

Code/message

200567 = Un nouvel utilisateur a été créé
462001 = inconnu Numéro client J'essaie de trouver la façon la plus simple, la plus légère et la plus facile de maintenir ce message dans Java.

Les règles sont les suivantes:

  1. Vous devez être en mesure d'accéder au message par son code
  2. Vous devez être en mesure d'imprimer le code
  3. Vous devez pouvoir facilement changer le numéro d'un code dans l'avenir

Autres notes:

  • Les messages peuvent être dans un fichier de propriétés, dans un autre fichier, dans une classe ou dans un autre endroit (?), Quoi que vous trouviez de mieux.
  • Le code peut être un entier ou une chaîne (comme MSG_423456), quoi que vous trouviez de mieux.

Alors, quelqu'un a des idées?
(Désolé pour mon mauvais anglais)

+0

sournois, mais ne va pas le faire.vous devez encore montrer ce que vous avez essayé, ce que vous pensez qui fonctionnerait, etc. avant que les gens ici vous disent comment faire votre travail (à la maison). – KevinDTimm

+0

devoirs sont faits pour être fait par vous-même: p – chzbrgla

+0

lol, c'est le travail sans la maison :) –

Répondre

1

Je mettrais cela dans une énumération.

public enum MessageType { 

NEW_USER("String 123", "A new user was created");
private String code, message;

private MessageType(String code, String message) { this.code = code;
this.message = message
}

Je pencherais pour énumérations parce qu'ils sont à vérifier dans le contrôle source, généralement dans les milieux où je travaille le fichier de propriétés est destiné à être configuré par l'individu. Comme un fichier de propriétés de construction ant.

+0

Merci! C'est la solution que j'utiliserai. –

+0

Ceci est une solution intéressante, mais elle ne remplit pas votre troisième exigence, "changer facilement le numéro d'un code dans le futur". Pour toute petite modification dans les nombres, vous devrez modifier votre code et le recompiler, sans parler des activités de votre contrôle source. J'opterais pour la solution 'ResourceBundle' proposée dans une autre réponse; cela conviendrait à toutes vos exigences. –

+0

@Paulo comme je l'ai mentionné dans ma réponse le fichier de propriétés, dans mes expériences, a été utilisé pour l'individu. Bien sûr, je n'ai pas utilisé 'ResourceBundle', il se peut que je manque quelque chose – Woot4Moo

4

Aller pour le fichier de propriétés. Utilisez ResourceBundle

200567 A new user was created 
462001 Unknown client number 
+0

Les fichiers Properies sont la meilleure solution, car ils vous permettent de modifier les messages, ou même d'utiliser des paramètres régionaux différents, sans modifier le code. Vous pouvez également les ignorer en plaçant les fichiers de propriétés dans les répertoires plus tôt ou plus tard dans le chemin de la classe. –

+0

le problème dans cette solution est le refactoring. Si j'ai besoin de changer un code de message, je devrai naviguer à travers tout le code source pour trouver tous les endroits où le code du message est utilisé (je pense ...). –

+0

Merci, heureusement, je ne pense pas que j'aurai besoin de messages locaux dans ce projet. Si à l'avenir mes patrons changent d'avis je vais pleurer et regretter de ne pas adopter un fichier proprieties :) –

1

Si je devais implemtn cela, j'utiliser un HashMap. Le code sont les clés et le message les valeurs.

+0

J'ai pensé à cela mais le problème est que vous devez faire hashmap.put à l'exécution pour tous les messages, et il n'est pas facilement refactorisable. –

+0

Merci, c'est une solution logique et facile à comprendre. –