Patrons de conception Flashcards
Donnez des types de documentation?
Incode, Doxy-gène, Open API, Tests, Séquence, Class Diagram (BAD)
Quels sont les 3 types de documents dans le modèle C4 (le 4e n’est pas pertinent)?
Contexte, Conteneur et Composante
Vrai ou faux. Pour chaque document de C4 on zoom de plus en plus sur les détails?
Vrai
À quoi sert le diagramme de context dans C4?
Il présente le pourquoi. Il offre un point de vue affaire. Il montre les interactions entre les unités d’affaire
Que contient le diagramme de conteneur dans C4?
Les unités de déploiement (API, webapp admin panel), les technos associées, la description de ce que le conteneur fait et la BD
Que contient le diagramme de composante dans C4?
Interactions dans les modules du code. Documente ce qu’on veut faire dans les interactions. Verbe d’action
Expliquez le modèle OSI.
Il s’agit d’une modèle réseau. Il y a 7 couches partant de la couche physique comme la plus basse jusqu’à la couche applicative (couche de plus haut niveau)
Expliquez le modèle en couches
On retrouve le UI (Vue), Service (Use cases), Domain (règles d’affaire, données), Infrastructure (persistance). Un problème: Domaine dépend de l’infra donc de la technologie.
Expliquez le modèle Ports & Adapter.
Domain est protégé par des ports et des adapters qui exposent un contrat. Le domaine est protégé des interactions et il y a une inversion de la dépendance avec la technologie.
Expliquez le modèle hexagonal.
C’est une adaptation du Ports & Adapter. On retrouve le domaine au centre, la couche applicative autour et la couche UI en dernière couche. Dans la couche applicative, on retrouve notamment les services et l’infrastructure.
Expliquez la clean architecture.
Il s’agit d’une évolution du modèle hexagonal. Le modèle hexagonal est passé au modèle en onion pour ensuite passer à la clean architecture. C’est donc une spécialisation du modèle hexagonal. On retrouve les entités au centre contenant les règles d’affaires et les données, les use cases à l’entour contenant la logique applicative, la présentation les adapters et les gateway (repo) autour pour finir avec avec les driver, les DB et les controllers (vue) en dernier. L’injection se fait toujours vers l’intérieur, c’est-à-dire vers les entités.
Quelle est la différence entre un style et un patron?
Style: Guideline, Macro, 1 à 3 styles au total dans une application et s’applique au système
Patron: Outils, Micro, Plusieurs et s’applique au code
Quelles sont les 4 familles de patrons de conception?
Génération d’objets, Structure du code (réduire le couplage), Comportement, Communication
Qu’est-ce que le Singleton? Donnez un exemple d’utilisation.
Patron qui permet de retrouver la seule instance de l’objet qui existe dans toute l’application. Il peut être utilisé pour un générateur d’ID par exemple.
Qu’est-ce que le Service Locator et quel est son lien avec le Singleton.
Lorsque nous avons plusieurs Singleton au sein d’une application et nous voulons y accéder. Il s’agit donc de localisateur de Singletons.
Qu’est-ce que la Factory? Donnez un exemple d’utilisation.
Avoir un objet dont sa responsabilité est de créer le bon objet avec certains paramètres et conditions. Souvent lorsque la création est plus complexe. Par exemple, créer un objet commande.
Qu’est-ce que la Abstract Factory? Donnez un exemple d’utilisation.
Se base sur la factory pour créer plusieurs factories en fonction de la même condition Par exemple, avoir un système par type de show (config(sport), SportTicketFactory, SportEmailFactory())
Qu’est-ce que le Builder? Donnez un exemple d’utilisation.
Permet de configurer un objet de base avec des critères optionnels. Utilisé pour des fixtures par exemple ou pour construire des forfaits avec un forfait par défaut auquel on ajoute des éléments.
Qu’est-ce que la Chaîne de validation? Donnez un exemple d’utilisation.
Effectuer plusieurs étapes de validation et briser la chaîne dès qu’une étape est invalide. Par exemple, on peut l’utiliser pour valider une carte de crédit pour valider la date d’expiration d’abord, la famille de carte de crédit, le CVV et le nom et dès qu’une étape est bonne on valide l’autre et dès que ce n’est pas valide on brise la chaine.
Qu’est-ce que la Template Method? Donnez un exemple d’utilisation.
Le principe de dicté troué dans les objets abstraits. Par exemple lorsqu’il y a quelques règles spécifiques et beaucoup de règles communes. C’est le cas avec la validation de polices d’assurance.
Qu’est-ce que la Chaîne de responsabilité? Donnez un exemple d’utilisation.
Trouver qui est le bon responsable pour faire un traitement spécifique sans avoir 100 000 “if”. On peut penser au service client par téléphone qui nous redirige toujours vers le bon poste ou par exemple, l’inscription d’un étudiant à un cours ou envoyer une notification selon les préférences de l’utilisateur.
Qu’est-ce que la Command? Donnez un exemple d’utilisation.
Gérer la complexité d’ordonnancement des commandes dans un système et permet aussi le rollback. Le service ajoute des commandes dans le CommandInvoker et exécute run(). Le CommandInvoker execute chacune des commande et effectue le rollback s’il y a un problème. On peut l’utiliser lors de l’étape de facturation d’un client.
Qu’est-ce que la Machine à état? Donnez un exemple d’utilisation.
Permet d’encapsuler une machine à état et de restraindre les transitions entre les états. Par exemple, il faut valider l’état pour transférer un billet (valider qu’il n’a pas été téléchargé) et chaque action change l’état. Un autre exemple est le niveau d’un barrage électrique qui va changer d’état en fonction de si l’eau monte ou descends et en fonction de son état actuel.
Qu’est-ce que l’Iterator? Donnez un exemple d’utilisation.
Permet d’itérer sur des éléments sans avoir une idée de la structure de données derrière la relation. Par exemple pour trouver les places dans une salle. On pourrait avoir un iterator en fonction du prix ou en fonction de la distance de la scène.