J'essaie de créer un objet volant en Java. J'ai travaillé avec un concept similaire dans l'objectif-C (classes singletons dans Objective-C // Je crois qu'ils sont la même chose). P>
J'essaie de trouver un tutoriel ou un exemple ou une explication en ligne pour apprendre à créer un objet de poids volé et à l'utiliser, mais j'ai recherché sur Google et je ne trouve rien de descente. J'ai traversé 10 pages et ils sont fondamentalement tous plagiagaires d'un site Web qui explique simplement le concept. Je comprends le concept - j'ai besoin de quelque chose pour m'aider / m'apprendre à la mettre en œuvre en Java. P>
Quelqu'un a des suggestions / tutoriels? P>
Merci! P>
5 Réponses :
Essentiellement, lors de l'allocation d'un objet, appelez statique sur celui-ci en fait un poids volé?
Euh non? Le point du modèle de poids volé est que vous partagez une seule instance de quelque chose plutôt que de créer de nouveaux objets identiques. L'exemple donné dans le wiki démontre ceci; Il n'y a rien de statique impliqué. L'usine unique crée une nouvelle instance d'un coffre code> code> la première fois qu'une saveur spécifique est demandée. Après cela, il renvoie une référence à cette seule instance de la saveur.
Comment n'y a-t-il rien de statique? Coffre-café statique [] Flavors Code>
Cela a rien i> à faire avec l'objet voleur. C'est juste dans leur classe de test pour montrer la fonctionnalité.
Je l'ai eu - c'est l'usine qui crée l'instance de la classe "Singleton".
À droite. Une distinction est que l'usine elle-même n'est pas un singleton (dans cet exemple); Si vous avez instancié deux usines, vous avez (potentiellement) avoir plusieurs instances d'une saveur donnée. Faire de l'usine un singleton aurait bien sûr la résoudre.
Suivi de l'exemple de Wikipedia que Brian cited ... p>
Habituellement, si vous souhaitez mettre en cache des objets (tels que des cafés) et les avoir partagés entre un certain nombre de piles de volée (les coffoits), vous les feriez statistiquement disponible. Mais ce n'est pas du tout nécessaire. La partie importante est que les coffoirs sont donnés aux objets partagés lorsqu'ils sont construits. strong> p>
Si les commandes ne sont toujours créées que par un singleton, comme une "cafardicserory", l'usine peut conserver une cache non statique des saveurs. Cependant, vous y accomplissez, votre objectif est d'obtenir toutes les commandes de l'ensemble du système d'utiliser le même ensemble exact d'objets de saveur. Mais à la fin de la journée, si vous voulez éviter de créer de nombreuses instances de caféFavor, il doit généralement être créé de manière statique, juste pour vous assurer qu'il n'y a qu'un seul cache. P>
Obtenez-le? P>
J'ai eu ce cas. Je pense que ma solution était volée.
Il m'a demandé de créer un arbre et de trier ses enfants par son nom. Quelque chose comme ceci: p>
C'est une tâche facile en fait. Mais veuillez noter que le premier "A" et le deuxième "A" dans l'entrée doivent faire référence au même objet. Par conséquent, j'ai codé quelque chose comme ça p> Il s'agit de la version simplifiée du problème réel, mais vous devriez avoir l'idée maintenant. P> P>
C'est vraiment très similaire à ce que je fais. Je crée un prquadtree. La classe de nœud est une classe abstraite. Le nœud de feuille vide est un objet de poids volé.
Le "java.lang.character" utilise le modèle de poids volé pour mettre en cache tous les caractères US-ASCII: voir en classe java.lang.character $ Caractère de caractère utilisé par le caractère.valueof () Méthode P>
JTABLE CODE> Editors and Renderers A > sont un bon exemple.Voici une explication du modèle de poids volé: logicielgowEgineering.stackexchange.com/questions/108630/...