Ceci est une question de programmation triviale. Je ne suis pas un expert en Java. Dis-je utiliser des objets de classes personnalisées société et les employés, d'une manière similaire à ce que beaucoup de SGBDR exemples font:Peut-on contrôler l'identité des objets dans Java, et si oui, comment?
class Employee
{
Company company;
}
class Company
{
String name;
}
je dois garantir que les différents objets Company
ont des noms uniques - dire pas deux de ces objets peuvent avoir le même nom, parce que de mon point de vue cela n'a pas de sens, et mange aussi simplement de la mémoire - si deux employés travaillent chez IBM, alors il y a un seul objet Company
avec cette période . Mes pensées vont maintenant faire Company
constructeur privé - de sorte que le travail d'allocation des objets de la Société avec des noms arbitraires est délégué à une méthode de confiance - qui, par exemple, rejettera toute tentative ultérieure de créer un objet avec un nom qui existe déjà ou renvoie un objet existant ou nouveau (en créer un si nécessaire).
Le problème est, je ne suis pas sûr de savoir comment l'accomplir avec élégance. Une chose qui serait bien de ne pas avoir à faire une recherche O(n)
chaque fois qu'un objet Company
avec un nom est demandé - alors peut-être une carte de hachage ou un arbre binaire est là pour mon confort? Je voudrais également remplacer la façon dont les objets Company
sont identifiés - ce qui m'amène à ceci: vais-je surcharger Object.equals
et/ou Object.hashCode
méthodes?
Etes-vous sûr que vous devriez être préoccupé par l'utilisation de la mémoire supplémentaire? Vous devrez payer pour garder une trace de toutes les entreprises en quelque sorte, et cela vous coûtera (probablement dans le processeur). Assurez-vous que votre optimisation n'est pas prématurée. – nojo
Ce n'est pas forcément tant pour l'optimisation que pour l'importance de la contrainte que deux objets 'Company' du même nom doivent être évités. De cette façon, si, par exemple, la société référencée par N employés change de nom, je dois seulement le faire pour un objet 'Company'. Des trucs comme ça. – amn