[GO] [Gang of Four] Apprentissage des modèles de conception --Singleton

Singleton - Une carte

** Table des matières ** Le dernier modèle de génération est une seule tonne. Je pense que c'est un modèle que tout le monde connaît. Je pense que le premier modèle de conception que j'ai appris était d'une seule tonne.

Les classes qui fournissent des connexions DB et les classes qui obtiennent des actifs sont généralement implémentées dans ce modèle. Garantit l'unicité d'une instance de cette classe dans le programme.

Objectif

Il garantit qu'il n'y a qu'une seule instance pour une classe et fournit un moyen global d'y accéder.

Composant

· Une classe dans laquelle une seule instance Singleton est créée

la mise en oeuvre

Si vous codez ce modèle avec kotlin, il sera sous une forme simple comme indiqué ci-dessous, donc je ne suis pas sûr, donc je vais le coder avec java.

SingletonObject.kt


package singleton

object SingletonObject {
    var str = ""

    fun print() {
        println("Résultat de sortie:$str")
    }
}

Créez des images et des fichiers musicaux à partir de plusieurs écrans via des objets singleton.

Classes qui ne génèrent qu'une seule instance Singleton

Objet Singleton

JavaSingletonObject.java


package singleton;

public class JavaSingletonObject {
    /**
     *Défini comme statique et rend l'instance de sa propre classe unique
     */
    public static JavaSingletonObject instance = new JavaSingletonObject();
    private String address = "/assets/temp";
    enum Assets {
        IMAGE1("image_1"),
        IMAGE2("image_2"),
        AUDIO1("audio_1"),
        AUDIO2("audio_2");

        private final String value;

        Assets(final String value) {
            this.value = value;
        }
    }

    /**
     *Définissez le constructeur comme privé afin qu'aucune nouvelle instance ne puisse être créée.
     */
    private JavaSingletonObject(){
        System.out.println("Lien:" + address);
    }

    public String getAssets(Assets target) {
        System.out.println("Acquisition de matériel avec objet singleton:" + target.value);
        return target.value;
    }
}

Classe d'écran 1

DisplayOne.kt


package singleton

class DisplayOne {
    fun draw() {
        println("Dans User1${JavaSingletonObject.instance.getAssets(JavaSingletonObject.Assets.IMAGE1)}Dessiner!!")
    }
}

Classe écran 2

DisplayTwo.kt


package singleton

class DisplayTwo {
    fun start() {
        println("Dans User2${JavaSingletonObject.instance.getAssets(JavaSingletonObject.Assets.AUDIO1)}Jouer!!")
    }
}

Utilisateur

Classe de gestion d'écran

Manager.kt


package singleton

class Manager {
    init {
        DisplayOne().draw()
        DisplayTwo().start()
    }
}

Ceci termine l'implémentation du modèle singleton. Ce processus est censé être exécuté une seule fois car la connexion aux actifs est établie dans le constructeur de la classe `` JavaSingletonObject ''.

De plus, puisque le constructeur est défini comme privé, il n'est pas possible de créer une nouvelle instance de la classe et l'unicité est garantie.

Résultat de sortie

[output]
Lien:/assets/temp
Acquisition de matière avec objet singleton: image_1
Image dans User1_Nul 1!!
Acquisition de matériel avec un objet singleton: audio_1
Audio dans User2_Jouer 1!!

Recommended Posts

[Gang of Four] Apprentissage des modèles de conception --Singleton
[Gang of Four] Apprentissage des modèles de conception
[Gang of Four] Apprentissage des modèles de conception - Décorateur
[Gang of Four] Apprentissage des modèles de conception - Visiteur
[Gang of Four] Apprentissage des modèles de conception - Médiateur
[Gang of Four] Apprentissage des modèles de conception - Itérateur
[Gang of Four] Apprentissage des modèles de conception - Façade
[Gang of Four] Apprentissage des modèles de conception - Composite
[Gang of Four] Apprentissage des modèles de conception - Prototype
[Gang of Four] Apprentissage des modèles de conception --Mémento
[Gang of Four] Apprentissage des modèles de conception - État
[Gang of Four] Apprentissage des modèles de conception - Interprétation
[Gang of Four] Apprentissage des modèles de conception - Constructeur
[Gang of Four] Apprentissage des modèles de conception - Pont
[Gang of Four] Apprentissage des modèles de conception - Proxy
[Gang of Four] Apprentissage des modèles de conception - Stratégie
[Gang of Four] Apprentissage des modèles de conception - Adaptateur
[Gang of Four] Apprentissage des modèles de conception --Observer
[Gang of Four] Apprentissage des modèles de conception - Commande
[Gang of Four] Apprentissage des modèles de conception - Poids du vol
[Gang of Four] Apprentissage des modèles de conception - Usine abstraite
[Gang of Four] Apprentissage des modèles de conception - Méthode d'usine
[Gang of Four] Apprentissage des modèles de conception - Chaîne de responsabilité
[Gang of Four] Apprentissage des modèles de conception - Méthode du modèle
Modèle de conception #Singleton
Modèles Gang of Four (GoF) en Python
Apprenez le modèle de conception "Singleton" avec Python
Modèle de conception #Builder
Modèle de conception #Adapter
Modèle de conception #Decorator
Apprentissage de la reconnaissance de formes en vidéo Partie 1 Champ de reconnaissance de formes
Modèle de conception #Observer
Modèle de conception #Facade
Modèle de conception #Strategy
Modèle de conception #Proxy
J'ai écrit un modèle de conception dans l'édition Kotlin Singleton
Apprenez le modèle de conception «Chaîne de responsabilité» en Python
Motif singleton en Java
Motif singleton en Python
Design Pattern #Factory, méthode
Deep learning 1 Pratique du deep learning
Design Pattern #Template, méthode
L'histoire selon laquelle les modèles de conception du GoF ne sont rien de plus qu'une «introduction de couches abstraites»
Résumé des modèles singleton de l'introduction aux modèles de conception appris en langage Java