Tout d'abord, jetons un coup d'?il à la définition du modèle singleton?:
Le modèle singleton est l'un des modèles de conception les plus simples en Java et est un modèle de création qui fournit la meilleure fa?on de créer des objets. Le modèle singleton implique une seule classe chargée de créer ses propres objets tout en garantissant qu'un seul objet est créé.
(Tutoriel recommandé?: Tutoriel d'introduction à Java)
Afin de vous assurer qu'il n'y a qu'un seul objet en mémoire, évitez la création fréquente d'objets qui entra?nent une consommation de mémoire, afin que tout cet objet singleton soit utilisé partout où cet objet doit être appelé.
Examinons ensuite les types de modèles singleton?:
1. Style paresseux
Le style paresseux signifie que le singleton ne sera créé que lorsqu'il est nécessaire.
Implémentation paresseuse du modèle singleton?:
public class Singleton { private static Singleton singleton; private Singleton(){ } public static Singleton getInstance(){ if (singleton == null) { singleton = new Singleton(); } return singleton; }
Il y a un problème avec l'implémentation paresseuse du singleton, c'est-à-dire comment s'assurer qu'un seul objet est créé?? Si deux threads ou plus déterminent que le singleton est vide en même temps, plusieurs objets seront créés. Nous devons donc résoudre le problème de sécurité des threads.
En matière de sécurité des threads, ce qui me vient à l'esprit est le verrouillage. Le verrouillage n'est rien de plus que le verrouillage d'une méthode ou d'un objet de classe.
//在方法上加鎖 public class Singleton { private static Singleton singleton; private Singleton(){} public static synchronized Singleton getInstance() { if (singleton == null) { singleton = new Singleton(); } return singleton; } } //在類對象上加鎖 public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton getInstance() { synchronized(Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } return singleton; } }
Ces deux méthodes peuvent résoudre le problème de la création multi-thread d'objets singleton en même temps, mais chaque fois que vous obtenez l'objet, vous devez d'abord acquérir le verrou et les performances de concurrence sont médiocres. Par conséquent, une optimisation est toujours nécessaire. L'objectif de l'optimisation est le suivant?: s'il n'y a pas d'objet instancié, verrouillez-le et créez-le. S'il y a un objet instancié, revenez-le directement.
(Recommandation vidéo d'apprentissage?: cours java )
Pour le verrouillage sur les méthodes, le verrouillage est requis, qu'il existe ou non un objet instancié. Par conséquent, ce que nous devons optimiser, c'est verrouiller l'objet de classe.
//DCL單例模式(Double Check + Lock) public class Singleton { //volatite關(guān)鍵詞防止指令重排序,下文介紹 private static volatile Singleton singleton; private Singleton(){} public static Singleton getInstance() { //如果singleton不為空,則直接返回對象,若多個線程發(fā)現(xiàn)singleton為空,則進入分支 if (singleton == null) { //多個線程同時爭搶一個鎖,只有一個線程能成功,其他線程需等待 synchronized(Singleton.class) { //爭搶到鎖的線程需再次判斷singleton是否為空,因為有可能被上個線程實例化了 //若不為空則實例化,后續(xù)線程再進入的時候則直接返回該對象 //對于之后所有進入該方法的線程則無需獲取鎖,直接返回對象 if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
Le mot-clé volatile est ajouté au code ci-dessus pour empêcher la réorganisation des instructions.
2. Style chinois affamé
Le style chinois affamé signifie que l'objet singleton est créé lorsque la classe est chargée.
Implémentation du modèle singleton de style chinois affamé?:
public class Singleton { private static final Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return singleton; }
Résumé?:
Style Lazy Man?: instancier des objets uniquement en cas de besoin En développement, si les besoins en mémoire sont élevés, c'est-à-dire. En utilisant le style paresseux, dans un environnement multithread, vous devez utiliser le mode singleton DCL. L'utilisation du mode singleton DCL résout les problèmes de sécurité de concurrence et de faibles performances. Si vous ajoutez le mot-clé volatile, cela peut également empêcher les exceptions NPE causées par. réorganisation des instructions.
Style chinois affamé?: l'objet a déjà été instancié lors du chargement de la classe. Si les besoins en mémoire ne sont pas élevés, utilisez le style chinois affamé. Il est simple, n'est pas sujet aux erreurs et n'en contient pas. problèmes de sécurité et de performances de concurrence.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le modèle JS singleton est un modèle de conception couramment utilisé qui garantit qu'une classe n'a qu'une seule instance. Ce mode est principalement utilisé pour gérer les variables globales afin d'éviter les conflits de noms et les chargements répétés. Il peut également réduire l'utilisation de la mémoire et améliorer la maintenabilité et l'évolutivité du code.

Réflexion sur les problèmes de sécurité des threads du mode singleton en PHP Dans la programmation PHP, le mode singleton est un modèle de conception couramment utilisé. Il peut garantir qu'une classe n'a qu'une seule instance et fournir un point d'accès global pour accéder à cette instance. Cependant, lors de l'utilisation du modèle singleton dans un environnement multithread, les problèmes de sécurité des threads doivent être pris en compte. L'implémentation la plus basique du modèle singleton comprend un constructeur privé, une variable statique privée et une méthode statique publique. Le code spécifique est le suivant?: classSingleton{pr

Modèle Singleton?: fournissez des instances singleton avec différents paramètres via une surcharge de fonctions. Modèle d'usine?: créez différents types d'objets grace à la réécriture de fonctions pour dissocier le processus de création des classes de produits spécifiques.

Dans le développement de logiciels, nous rencontrons souvent des situations où plusieurs objets doivent accéder à la même ressource. Afin d'éviter les conflits de ressources et d'améliorer l'efficacité du programme, nous pouvons utiliser des modèles de conception. Parmi eux, le modèle singleton est un moyen couramment utilisé pour créer des objets, qui garantit qu'une classe n'a qu'une seule instance et fournit un accès global. Cet article explique comment utiliser PHP pour implémenter le modèle singleton et fournit quelques suggestions de bonnes pratiques. 1. Qu'est-ce que le mode singleton ?Le mode singleton est un moyen couramment utilisé pour créer des objets. Sa caractéristique est de garantir qu'une classe n'a qu'une seule instance et fournit.

Le modèle Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global. Il garantit qu'un seul objet est disponible et sous contr?le dans l'application. Le modèle Singleton fournit un moyen d'accéder directement à son objet unique sans instancier l'objet de la classe. Exemple<?php classdatabase{ publicstatic$connection;

Introduction Les modèles de conception PHP sont un ensemble de solutions éprouvées aux défis courants du développement de logiciels. En suivant ces modèles, les développeurs peuvent créer un code élégant, robuste et maintenable. Ils aident les développeurs à suivre les principes SOLID (responsabilité unique, ouvert-fermé, remplacement de Liskov, isolation d'interface et inversion de dépendance), améliorant ainsi la lisibilité, la maintenabilité et l'évolutivité du code. Types de modèles de conception Il existe de nombreux modèles de conception différents, chacun ayant son propre objectif et ses avantages. Voici quelques-uns des modèles de conception PHP les plus couramment utilisés?: Modèle Singleton?: garantit qu'une classe n'a qu'une seule instance et fournit un moyen d'accéder à cette instance de manière globale. Modèle d'usine?: crée un objet sans spécifier sa classe exacte. Il permet aux développeurs de conditionnellement

Scénarios d'application et processus de sécurité des threads du mode singleton dans les systèmes distribués PHP Introduction : Avec le développement rapide d'Internet, les systèmes distribués sont devenus un sujet br?lant dans le développement de logiciels modernes. Dans les systèmes distribués, la sécurité des threads a toujours été un problème important. Dans le développement PHP, le modèle singleton est un modèle de conception couramment utilisé, qui peut résoudre efficacement les problèmes de partage de ressources et de sécurité des threads. Cet article se concentrera sur les scénarios d'application et les processus de sécurité des threads du modèle singleton dans les systèmes distribués PHP, et fournira des exemples de code spécifiques. 1. Mode singleton

Le modèle Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global dans JavaScript. 1) Utilisez les fermetures et l'IIFE pour atteindre l'unicité et l'accès global. 2) Mais l'attention doit être accordée à la gestion mondiale de l'état, aux tests unitaires et aux problèmes d'évolutivité. 3) Il est recommandé de minimiser l'état mondial, de considérer les alternatives et d'effectuer une conception modulaire.
