Detection de navigateur et Design Patterns en JavaScript : Singleton et Factory

Maitrisez la detection de navigateur et les patterns creatifs en JavaScript : Singleton, Factory et methodes de feature detection.

Mahmoud DEVO
Mahmoud DEVO
December 27, 2025 2 min read
Detection de navigateur et Design Patterns en JavaScript : Singleton et Factory

Détection de navigateur et paterns créatifs : Comprendre la programmation JavaScript à l’aide de cas pratiques

Les développeurs sont souvent confrontés au défi de créer des applications qui fonctionnent sur différents navigateurs et versions. Dans cet article, nous allons explorer deux sujets importants pour les développeurs avancés : la détection de navigateur et les patterns créatifs.

Détection de navigateur

La détection de navigateur est essentielle pour garantir que votre application fonctionne sur différentes plateformes. Voici quelques méthodes pour détecter le navigateur utilisé par l’utilisateur :

Méthode de détection des caractéristiques (Feature Detection)

Cette méthode consiste à vérifier l’existence de certaines caractéristiques spécifiques du navigateur. C’est une approche plus difficile à contourner, mais elle n’est pas garantie pour être future-proof.

Exemple :

// Opera 8.0+
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

Méthode de détection de l’agent utilisateur (User Agent Detection)

Cette méthode consiste à extraire le nom et la version du navigateur à partir de l’agent utilisateur. C’est une approche plus facile à mettre en œuvre, mais elle peut être facilement contourner par les utilisateurs.

Exemple :

navigator.sayswho = (function(){
    var ua = navigator.userAgent,
        tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\s*(\d+)/i) || [];
    // ...
})();

Méthode de détection utilisant des bibliothèques

Une approche plus facile pour certains développeurs est d’utiliser des bibliothèques existantes pour la détection de navigateur. Une bibliothèque populaire pour cela est Bowser.

Exemple :

if (bowser.msie && bowser.version >= 6) {
    alert('IE version 6 ou supérieure');
} else if (bowser.firefox) {
    alert('Firefox');
}

Patterns créatifs

Les patterns créatifs sont des modèles de conception utilisés pour résoudre des problèmes spécifiques. Voici quelques exemples de patterns créatifs :

Singleton Pattern

Le Singleton pattern est un patron de conception qui garantit que seule une instance d’une classe soit créée.

Exemple :

class Singleton {
    private static _instance: Singleton;

    public static getInstance(): Singleton {
        if (!Singleton._instance) {
            Singleton._instance = new Singleton();
        }
        return Singleton._instance;
    }

    // ...
}

Factory Pattern

Le Factory pattern est un patron de conception qui permet de créer des objets sans connaître leur classe spécifique.

Exemple :

class VehicleFactory {
    public createVehicle(type: string): any {
        switch (type.toLowerCase()) {
            case "car":
                return new Car();
            case "truck":
                return new Truck();
            default:
                return null;
        }
    }
}

Conclusion

La détection de navigateur et les patterns créatifs sont des sujets importants pour les développeurs avancés. En comprenant ces concepts, vous pouvez créer des applications qui fonctionnent sur différentes plateformes et résoudre des problèmes spécifiques.

Pour aller plus loin, nous recommandons d’explorer les autres patterns créatifs, tels que le Observer pattern, le Strategy pattern et le Template Method pattern. Nous espérons que cet article vous aura été utile !

Advertisement

In-Article Ad

Dev Mode

Share this article

Mahmoud DEVO

Mahmoud DEVO

Senior Full-Stack Developer

I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.

Enjoyed this article?

Subscribe to get more tech content delivered to your inbox.

Related Articles