Définition: Le modèle d'usine abstrait fournit une interface pour créer des familles d'objets associés ou dépendants sans spécifier leurs classes concrètes. Ce modèle est particulièrement utile lorsqu'un système doit être indépendant de la façon dont ses produits sont créés, composés et représentés.
Exemple d'utilisation: imaginez développer un logiciel de simulation qui peut représenter différents environnements (terre, mer, air). En utilisant le modèle d'usine abstrait, vous pouvez définir une interface d'usine avec des méthodes pour créer différents types d'animaux et de plantes, puis implémenter différentes usines de béton pour chaque environnement, chacun sachant comment créer des objets spécifiques à cet environnement.
Définition: Le modèle de méthode d'usine définit une interface pour créer un objet mais permet de décider de la classe à instanciation. Ce modèle délègue la responsabilité de l'instanciation des objets à une sous-classe, favorisant le couplage lâche.
Exemple d'utilisation: une application de gestion de documents peut utiliser la méthode d'usine pour créer différents types de documents (texte, graphiques, présentations). Chaque type de document aura sa classe concrète, et la méthode d'usine dans la classe de base décidera du document à créer en fonction de la saisie de l'utilisateur, isolant ainsi le code client à partir de classes de documents concrètes.
Définition: Le motif du constructeur sépare la construction d'un objet complexe de sa représentation, permettant la même construction pour différentes représentations. Ce modèle est utile lorsqu'un objet doit être créé à plusieurs étapes, et le processus de construction doit être le même pour différentes représentations.
Exemple d'utilisation: considérez un constructeur de voitures qui peut créer différents types de voitures (sports, SUV, cabriolet). En utilisant le constructeur, le processus de construction de ces voitures peut être standardisé en différentes étapes (châssis de construction, moteur, intérieurs) tandis que les détails spécifiques de chaque type de voiture sont gérés par différents constructeurs de béton.
Définition: Le modèle de la chaîne de responsabilité permet de passer une demande le long d'une chaîne de gestionnaires. Chaque gestionnaire décide de traiter la demande ou de la transmettre au gestionnaire suivant de la chaîne.
Exemple d'utilisation: Dans un système d'assistance, une demande de support peut passer par différents niveaux de support technique. Chaque niveau examine la demande et décide s'il peut le gérer ou le passer au niveau suivant. Cela évite le couplage de l'expéditeur de demande avec le récepteur spécifique et distribue la responsabilité des différents objets.
Définition: Le modèle de commande transforme une demande en un objet indépendant qui contient toutes les informations nécessaires pour effectuer l'action. Cela permet des méthodes de paramétrage avec différentes demandes, en retardant ou en faisant la queue d'exécution d'une demande et en soutenant les opérations d'annulation.
Exemple d'utilisation: Dans une application domestique, des commandes telles que l'allumage / éteindre les lumières ou le réglage du thermostat peuvent être encapsulées dans des objets de commande. Ces commandes peuvent être envoyées par différents appareils, tels que les smartphones ou les tablettes, et peuvent être planifiés ou défaits au besoin.
Définition: Le modèle de prototype permet de copier des objets existants sans rendre le code dépendant de leurs classes. Chaque classe prototypée implémente l'interface prototype, qui fournit une méthode pour se cloner elle-même.
Exemple d'utilisation: Dans un jeu, au lieu de créer des objets à partir de zéro à chaque fois dans une scène, un objet «prototype» peut être cloné pour créer des copies identiques. Ceci est particulièrement utile dans les scénarios de jeu où la création et la détruire de nombreux objets similaires peuvent être à forte intensité de performances.
Définition: Le modèle de souvenir permet d'enregistrer et de restaurer l'état précédent d'un objet sans révéler les détails de son implémentation interne. Ce modèle est utile pour implémenter des fonctionnalités telles que l'annulation dans les applications qui nécessitent la capacité de revenir aux états précédents.
Exemple d'utilisation: imaginez développer un éditeur de texte qui permet aux utilisateurs d'annuler les modifications de texte. Chaque fois qu'une modification significative est effectuée, l'état de l'éditeur est enregistré dans un objet de souvenir. Si l'utilisateur souhaite annuler les modifications, l'éditeur peut restaurer l'état de l'un de ces objets de souvenir, en renvoyant le texte à son état précédent.
Définition: Le modèle de médiateur définit un objet qui centralise la communication complexe et les dépendances entre les objets connectés, favorisant le couplage lâche et empêchant les objets de se référer directement les uns aux autres. Cela permet une meilleure gestion des interactions complexes et améliore la maintenabilité du code.
Exemple d'utilisation: considérez une application de contrôle du trafic aérien. Au lieu de permettre à chaque avion de communiquer directement avec tous les autres (créant un système extrêmement complexe), un médiateur - dans ce cas, la tour de contrôle - gère toutes les communications. Les avions ne communiquent qu'avec la tour de commande, qui dirige ensuite les actions de chaque avion, comme quand et où atterrir.
Définition: Le modèle de méthode de modèle définit le squelette d'un algorithme dans une méthode, report certaines étapes à exécuter par sous-classes. Cela permet de redéfinir certaines étapes d'un algorithme sans modifier la structure de l'algorithme.
Exemple d'utilisation: pensez à un cadre de test automatisé. La méthode du modèle peut être utilisée pour définir une structure de test standard, où la méthode du modèle établit le flux d'exécution du test (configuration, exécution, nettoyage). Les sous-classes de test spécifiques peuvent ensuite personnaliser chaque étape en implémentant des méthodes de configuration, d'exécution de test réelle et de opérations de nettoyage après le test.
Définition: Le modèle d'observateur établit une relation un-à-plusieurs entre les objets de sorte que lorsqu'un objet modifie l'état, toutes ses personnes à charge sont notifiées et mises à jour automatiquement. Ce modèle est particulièrement utile pour mettre en œuvre des systèmes de notification d'événements distribués, où les modifications d'un état doivent se refléter en temps réel dans d'autres systèmes ou composants.
Exemple d'utilisation: considérez un système de gestion du climat dans un bâtiment intelligent. Les capteurs de température (éditeurs) surveillent en continu l'environnement et, en cas de modifications importantes, envoient des mises à jour à divers appareils (observateurs), tels que les climatiseurs et les systèmes de chauffage, qui s'ajustent en conséquence pour maintenir une température optimale. De cette façon, le système de climatisation peut réagir dynamiquement aux conditions environnementales sans intervention humaine directe, assurer le confort et l'efficacité énergétique.
Définition: Le modèle d'état permet à un objet de modifier son comportement lorsque son état interne change. Il semble que l'objet change sa classe. Ce modèle est utile pour gérer les situations de changement d'état complexes, en réduisant le besoin de conditions de ramification (IF-Else ou Switch) dans le code.
Exemple d'utilisation: imaginez développer une application pour gérer le cycle de vie d'une commande en ligne. La commande peut être dans divers États tels que «traitement», «expédié», «livré». En utilisant le modèle d'état, vous pouvez définir une classe Orderstate abstraite avec des méthodes comme Process (), Ship () et Deliver (). Chaque état de béton (par exemple, ProcessageState, StrippedState, DeliredState) mettra en œuvre ces méthodes pour gérer les transitions d'état de manière appropriée. Le contexte (par exemple, la classe de commande) maintient une référence à l'état actuel et délégue les opérations d'état à des objets d'état concrètes, permettant ainsi au comportement de l'ordre de changer en fonction de son état actuel sans intervention directe à partir du code client.
Définition: Le modèle de stratégie est un modèle de comportement qui permet de définir une famille d'algorithmes, de les résumer dans une classe dédiée et de rendre des objets interchangeables dans ce contexte. Cette approche permet de varier des algorithmes indépendamment des clients qui les utilisent.
Exemple d'utilisation: imaginez une application de commerce électronique qui doit mettre en œuvre différentes stratégies de calcul de l'impôt en fonction du pays du client. Avec le modèle de stratégie, vous pouvez définir une interface TaxStrategy avec une méthode CalculaTetax (), puis mettre en œuvre diverses stratégies concrètes pour différents contextes fiscaux, tels que UStaxstrategy, Eutaxstrategy et AsiataxStrategy.
Définition: Le modèle d'itérateur fournit un moyen d'accéder aux éléments d'un objet agrégé séquentiel sans exposer sa représentation sous-jacente. Ce modèle est particulièrement utile pour gérer différents modes de traversée d'une collection.
Exemple d'utilisation: considérez une collecte de données telles qu'un arbre ou un graphique. En utilisant le modèle d'itérateur, vous pouvez fournir un accès uniforme aux éléments de ces structures de données complexes sans que le code client n'ayant à gérer les différences entre les différentes structures. Par exemple, vous pourriez avoir différents itérateurs comme DefthFirstiterator et EastthFirsterator pour traverser un graphique.
Définition: Le modèle du visiteur permet de séparer un algorithme de la structure des objets sur lesquels il fonctionne. Ce modèle fournit un moyen d'ajouter de nouvelles opérations aux classes existantes sans les modifier.
Exemple d'utilisation: imaginez avoir un système de gestion client dans un contexte d'assurance. Le modèle des visiteurs permet à un objet de parcourir une liste de clients et de leur envoyer des messages personnalisés concernant l'assurance.
Définition: Le modèle de l'adaptateur permet aux interfaces incompatibles de fonctionner ensemble. Il agit comme un pont entre deux interfaces incompatibles en transformant l'interface d'une classe existante en une autre interface attendue par les clients.
Exemple d'utilisation: Supposons que vous ayez une nouvelle interface pour le rendu des graphiques, mais une bibliothèque existante offre des fonctionnalités similaires avec une interface différente. Au lieu de réécrire la bibliothèque existante, vous pouvez utiliser un adaptateur pour que la bibliothèque existante fonctionne avec la nouvelle interface de rendu, permettant ainsi une intégration transparente.
Définition: Le modèle de pont est un modèle structurel qui sépare une abstraction de sa mise en œuvre, leur permettant de varier indépendamment. Il est utilisé pour diviser une grande classe ou un ensemble de classes étroitement liées en deux hiérarchies distinctes - abstraction et implémentation - qui peuvent être développées et modifiées indépendamment.
Exemple d'utilisation: Dans une application de livraison de pizza, il existe différents types de pizzas disponibles, chacun avec son goût unique et différents types de restaurants avec différents styles de cuisine. Lorsqu'une commande de pizza est passée, l'application utilise le modèle de pont pour s'assurer que la pizza est composée en fonction des préférences du client et cuite à la suite du style spécifique du restaurant choisi. De cette façon, le modèle de pont facilite l'intégration entre les différents types de pizzas et les différents styles de cuisine des restaurants, permettant une livraison efficace et personnalisée.
Définition: Le modèle composite est un motif structurel qui permet de traiter uniformément des groupes d'objets et d'objets individuels. Ce modèle organise des objets en une structure d'arbre pour représenter des hiérarchies partielles. Il permet aux utilisateurs de travailler uniformément avec des objets individuels et des compositions d'objets.
Exemple d'utilisation: Imaginez avoir un système de gestion des boîtes-cadeaux contenant des articles individuels et d'autres boîtes. Le client crée une boîte principale et ajoute des éléments comme des livres et des jeux vidéo, ainsi qu'une petite boîte contenant un livre. Le prix total de tous les articles à l'intérieur de la boîte principale est ensuite calculé. Le modèle composite permet de traiter les objets individuels et les compositions d'objets de la même manière, en simplifiant le code et en rendant les opérations uniformes sur les objets individuels et les groupes d'objets.
Définition: Le motif du décorateur est un motif structurel qui permet d'ajouter des responsabilités supplémentaires aux objets dynamiquement sans modifier leur structure par l'héritage. Ce modèle fournit une alternative flexible à la dérivation de classes étendues pour étendre les fonctionnalités.
Exemple d'utilisation: imaginez avoir un système de notification. Le modèle de décorateur permet d'étendre la fonctionnalité de diverses plateformes sociales. De cette façon, les notifications peuvent être envoyées via divers canaux sans modifier directement le code.
Définition: Le modèle de façade est un modèle structurel qui fournit une interface unifiée à un ensemble d'interfaces dans un sous-système. Ce modèle définit une interface de haut niveau qui rend le sous-système plus facile à utiliser.
Exemple d'utilisation: considérons un système complexe pour gérer les appareils multimédias dans une voiture, qui comprend des sous-systèmes pour la connectivité audio, vidéo et Bluetooth. Une façade peut offrir une interface simple pour démarrer la musique, arrêter la vidéo ou gérer les appels, cacher la complexité et les dépendances entre les sous-systèmes.
Définition: Le modèle de poids mouche est un modèle structurel qui utilise le partage pour soutenir efficacement un grand nombre d'objets à grain fin. Il est particulièrement utile lorsqu'une grande partie de l'état d'un objet peut être partagée et rendu externe.
Exemple d'utilisation: Imaginez avoir une application pour gérer les types de livres. Il utilise une usine pour créer et partager des instances de types de livres. De cette façon, si le même type de livre est demandé plusieurs fois, le même objet est renvoyé au lieu d'en créer un nouveau à chaque fois. Cela économise la mémoire et améliore les performances globales de l'application.
Définition: Le modèle proxy fournit un substitut ou un espace réservé pour un autre objet pour y contrôler l'accès. Ce modèle est utilisé lorsque vous souhaitez imposer des restrictions à l'accès à un objet, un chargement paresseux ou à fournir une localisation transparente d'un objet dans un environnement distribué.
Exemple d'utilisation: Dans le contrôle d'accès à un système de fichiers, un proxy peut être utilisé pour contrôler les opérations des utilisateurs sur les fichiers. Le proxy vérifie les informations d'identification d'un utilisateur avant d'autoriser l'accès réel au fichier, offrant une sécurité supplémentaire.
Définition: Le modèle Singleton est un modèle de création qui garantit qu'une classe n'a qu'une seule instance tout en fournissant un point d'accès global à cette instance.
Exemple d'utilisation: Dans une application, le singleton peut être utilisé pour gérer la configuration de l'application. Un objet Singleton peut contenir toutes les configurations qui restent constantes pendant l'exécution de l'application et peuvent être lues à partir de différentes parties du programme.