L'auteur explique pourquoi le pattern Singleton, bien que séduisant par sa simplicité, se transforme souvent en antipattern coûteux. À travers son expérience sur un projet legacy truffé de Singletons, il montre comment ce pattern crée des dépendances cachées, rend les tests impossibles et engendre des problèmes de concurrence. Le Singleton, en agissant comme une variable globale déguisée, viole plusieurs principes SOLID (Dependency Inversion, Single Responsibility, Open/Closed) et complique la maintenance du code. Les tests deviennent difficiles à écrire et à isoler, tandis que la gestion de l’état global partagé introduit des bugs aléatoires et des goulots d’étranglement. L’auteur propose des alternatives comme l’injection de dépendances, la composition root ou les factories, qui rendent le code plus testable, flexible et maintenable. Il conclut que le Singleton doit être évité dans la plupart des cas, sauf pour des ressources vraiment uniques et globales, et insiste sur l’importance de bien évaluer les compromis avant de l’utiliser.
Ce billet explore l'utilisation pratique des Design Patterns en PHP et Symfony, en se concentrant sur des exemples concrets comme Factory, Observer et Facade. Il démystifie ces concepts souvent perçus comme théoriques et montre comment ils structurent et améliorent le code au quotidien. Par exemple, le pattern Factory simplifie la création d'objets complexes, tandis que le pattern Observer permet de découpler les actions déclenchées par des événements. Le billet illustre ces principes avec des extraits de code et des cas d'utilisation dans Symfony, offrant ainsi une compréhension claire et applicable de ces patterns.
L'article explore les principaux modèles de conception de création en JavaScript, offrant des solutions éprouvées pour structurer et rendre le code plus flexible et réutilisable. Il couvre plusieurs modèles, dont le Singleton, qui garantit qu'une classe n'a qu'une seule instance, le Prototype, qui permet de créer de nouveaux objets en copiant des objets existants, et le Factory, qui fournit une interface pour créer des objets tout en permettant aux sous-classes de modifier le type d'objets créés. D'autres modèles comme l'Abstract Factory, qui crée des familles d'objets apparentés, et le Builder, qui construit des objets complexes étape par étape, sont également détaillés. Chaque modèle est illustré avec des exemples pratiques et des cas d'utilisation réels, montrant comment ils peuvent être mis en œuvre efficacement en JavaScript pour améliorer la structure et la maintenabilité du code.
L'article explique comment Zenstruck Foundry a révolutionné les tests dans Symfony en permettant de créer des données de test de manière simplifiée et expressive. Cette bibliothèque utilise des factories pour générer rapidement des données pour les entités Doctrine, supporte Faker pour des données aléatoires réalistes, et intègre des fonctionnalités comme les "stories" pour définir des scénarios de données réutilisables. Foundry est particulièrement utile pour tester des modèles de domaine complexes, y compris les Value Objects et les Aggregates en Domain-Driven Design (DDD), en simulant des interactions réalistes sans la complexité de gérer les données sous-jacentes
.
Un résumé pour l'implémentation pratique des principes du DDD
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Une bonne explication de ce design pattern
L'auteur compare l'utilisation de l'Expression Language de Symfony2 avec l'utilisation de Factories pour l'injection de dépendances dans un fichier de configuration.