2010-09-26 7 views
-1

Je crée une API Java pour un carnet d'adresses Est-ce une bonne pratique d'utiliser Enums dans mon API?Enums dans Java API

Je l'utilise comme suit:

public enum AddressType { 

WORK,HOME 

} 

public class AddressBook implements Function{ 

    Map<String, Details> byName = new TreeMap<String,Details>(); 


    public void addNewContact(String name, String address, AddressType 
      addressType) { 

     byName.put(name, new Details(name,new Address(address,addressType))); 
// addressType is my enum AddressType 
    } 

S'il vous plaît aviser s'il y a une meilleure façon de le faire?

Également pourriez-vous me guider sur la façon dont je pourrais déterminer quelles méthodes je devrais déclarer comme protégé et privé? Je veux que cette API soit accessible au public, donc je crois comprendre que toutes les méthodes, classes, énumérations que je crée devraient être publiques. Mais cela ne serait-il pas négliger la propriété d'encapsulation de Java ??

Aidez-nous s'il vous plaît.

Merci }

+4

Vous avez posté beaucoup de questions. Il y avait à peu près autant de modifications à apporter à votre question parce que vous n'avez pas fait attention à la mise en forme du message. Si vous voulez être plus frais sur ce site, ce serait bien parce que quelqu'un devait vous l'expliquer. Mais vous n'êtes plus un plus frais. Pourquoi ne faites-vous pas attention à la mise en forme de votre question malgré les nombreuses modifications et commentaires sur vos questions précédentes? Vous pouvez trouver les règles de formatage des messages dans la partie droite de l'éditeur. Vous pouvez voir un aperçu au bas de l'éditeur (PS: je n'ai pas downvote, mais je peux imaginer que c'était la raison). – BalusC

+1

Certaines personnes prennent souvent, donnent rarement. – Alex

+1

Je suis désolé pour les problèmes ci-dessus. Prendra plus d'attention et contribuera autant que possible. Désolé pour le dérangement. – JJunior

Répondre

0

énumérations en règle générale, sont une bonne idée. Pour toutes les données qui peuvent être représentées comme un petit nombre de chaînes immuables, c'est un type de données très utile à avoir autour. (Cela est particulièrement agréable que vous puissiez y attacher des métadonnées et des comportements si vous le souhaitez)

Cela dit, l'hésitation que j'ai à propos de votre idée de l'utiliser pour des types de contact tels que WORK et HOME est que cela rend impossible pour le utilisateur d'avoir son propre type de contact personnalisé. Par exemple, que se passe-t-il si j'ai deux emplois à temps partiel et que je veux catégoriser les gens en fonction du poste qu'ils occupent?

Si vous êtes d'accord avec cette limitation, je dirais aller pour cela.

Si vous voulez plus de flexibilité, je vous suggère de stocker le type de contact sous forme de chaîne ou d'utiliser une solution de base de données. Pour quelque chose comme ça, il peut être logique de stocker vos données dans une base de données SQLite car cela vous permet de construire facilement un modèle relationnel.

+1

Y at-il une meilleure façon de suggérer par laquelle je peux incorporer la flexibilité? – JJunior