Patrons de conception Flashcards

1
Q

Donnez des types de documentation?

A

Incode, Doxy-gène, Open API, Tests, Séquence, Class Diagram (BAD)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quels sont les 3 types de documents dans le modèle C4 (le 4e n’est pas pertinent)?

A

Contexte, Conteneur et Composante

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Vrai ou faux. Pour chaque document de C4 on zoom de plus en plus sur les détails?

A

Vrai

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

À quoi sert le diagramme de context dans C4?

A

Il présente le pourquoi. Il offre un point de vue affaire. Il montre les interactions entre les unités d’affaire

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Que contient le diagramme de conteneur dans C4?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Que contient le diagramme de composante dans C4?

A

Interactions dans les modules du code. Documente ce qu’on veut faire dans les interactions. Verbe d’action

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Expliquez le modèle OSI.

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Expliquez le modèle en couches

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Expliquez le modèle Ports & Adapter.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Expliquez le modèle hexagonal.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Expliquez la clean architecture.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Quelle est la différence entre un style et un patron?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quelles sont les 4 familles de patrons de conception?

A

Génération d’objets, Structure du code (réduire le couplage), Comportement, Communication

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qu’est-ce que le Singleton? Donnez un exemple d’utilisation.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Qu’est-ce que le Service Locator et quel est son lien avec le Singleton.

A

Lorsque nous avons plusieurs Singleton au sein d’une application et nous voulons y accéder. Il s’agit donc de localisateur de Singletons.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qu’est-ce que la Factory? Donnez un exemple d’utilisation.

A

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.

17
Q

Qu’est-ce que la Abstract Factory? Donnez un exemple d’utilisation.

A

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())

18
Q

Qu’est-ce que le Builder? Donnez un exemple d’utilisation.

A

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.

19
Q

Qu’est-ce que la Chaîne de validation? Donnez un exemple d’utilisation.

A

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.

20
Q

Qu’est-ce que la Template Method? Donnez un exemple d’utilisation.

A

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.

21
Q

Qu’est-ce que la Chaîne de responsabilité? Donnez un exemple d’utilisation.

A

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.

22
Q

Qu’est-ce que la Command? Donnez un exemple d’utilisation.

A

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.

23
Q

Qu’est-ce que la Machine à état? Donnez un exemple d’utilisation.

A

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.

24
Q

Qu’est-ce que l’Iterator? Donnez un exemple d’utilisation.

A

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.

25
Q

Qu’est-ce que la Strategy? Donnez un exemple d’utilisation.

A

Selon un critère précis, on peut changer le type de comportement qui va être fait lors d’un appel de méthode et permettre d’en ajouter simplement. Par exemple on peut choisir comment gérer une waiting list and fonction de la capacité limite ou du cpu. La Strategy favorise l’OCP.

26
Q

Qu’est-ce que le Unit of work? Donnez un exemple d’utilisation.

A

Responsable de suivre une transaction d’affaire qui effectue des modifications par étape sur un ou plusieurs objet. L’intention est de donner un responsable qui devra faire la manipulation à la base de données 1 seule fois dans la transaction et qui ainsi simplifie la gestion d’erreur et des états intermédiaires d’une transaction d’affaires. Par exemple pour effectuer une transaction d’achat de billet (doit mettre à jour l’inventaire et faire la facturation). Utile pour la concurrence

27
Q

Qu’est-ce que l’Observateur? Donnez un exemple d’utilisation.

A

Facilite la gestion des notifications à des évènements qui surviennent sur un objet. On écoute sur ce qui se passe. Par exemple, pour envoyer une notification ou Logger quelque chose.

28
Q

Qu’est-ce que le Médiateur? Donnez un exemple d’utilisation.

A

Évite que tout le monde doit se connaître pour communiquer en jouant l’intermédiaire, les messages sont standards par contre. Par exemple s’enregistrer ou envoyer un courriel à un destinataire dans un système ticket avec app mobile, billetterie, scanner.

29
Q

Qu’est-ce que le Proxy? Donnez un exemple d’utilisation.

A

Interface entre le véritable objet et l’appelant pour ajouter du traitement ou autre chose (voir plus en détail dans le cours des styles protectionnistes). Par exemple, un système de caching du repo.

30
Q

Qu’est-ce que le Repository?

A

Abstraire les notions de persistance dans le domaine. Donne l’illusion que toutes informations se trouvent en mémoire. Offre un contrat d’utilisation orienté sur les opérations nécessaires pour le domaine

31
Q

Qu’est-ce que l’Active Record?

A

Représentation d’un objet du domaine qui est à la fois responsable de sa logique d’affaires, des données, mais aussi du mécanisme de persistance de l’objet. Il communique directement avec la base de données du système pour faire les actions. Exemple, un profil utilisateur qui se sauvegarde lors de sa création.

32
Q

Qu’est-ce que le Data Access Object (DAO)?

A

Plus proches représentation de la structure de persistance dans notre système. Elle nous permet d’accéder aux informations de l’engin de persistance pour créer des objets complexes partiel ou complet. Utile pour permettre d’avoir plusieurs accès à la même structure de persistances (table, document, autres). Par exemple avoir un ProfileDAO et un TicketDAO pour recréer un Profile avec ses tickets comme les 2 sont dans 2 tables différentes

33
Q

Qu’est-ce que l’Adapteur? Donnez un exemple d’utilisation.

A

Permet d’adapter un contrat dans un autre format pour protéger notre système. Par exemple communiquer avec un système externe.

34
Q

Qu’est-ce que la Facade? Donnez un exemple d’utilisation.

A

Être le point d’entrée dans un système en spaghetti et vouloir restreindre les liens de dépendances. On l’utilise par exemple dans le Strangler Pattern.

35
Q

Qu’est-ce que le Bridge? Donnez un exemple d’utilisation.

A

Permettre une évolution différente entre les implémentations techniques et les abstractions nécessaires pour le problème d’affaire. Par exemple permettre plusieurs types de login

36
Q

Qu’est-ce que le Décorateur? Donnez un exemple d’utilisation.

A

Ajouter du comportement sans avoir à modifier la classe de base et sans que l’appelant en ait conscience. Par exemple ajouter du monitoring sans polluer la logique d’affaire.

37
Q

Qu’est-ce que le Data Transfer Object (DTO)?

A

Permet le transfert de données entre les objets d’une application dans l’objectif de réduire le couplage d’un système. Encapsule plusieurs informations permettant de donner le contexte d’une action à un autre objet sans devoir lui passer toutes les données, une à la fois.

38
Q

Qu’est-ce que le Composite? Donnez un exemple d’utilisation.

A

Représenter une grappe d’objet en ayant un seul point d’entrée et plusieurs sous-objets différents. Par exemple pour chercher le billet le moins cher dans une salle avec plusieurs zones

39
Q

Qu’est-ce que le Plugin/Provider? Donnez un exemple d’utilisation.

A

Permet de gérer la configuration d’un système en réduisant le couplage direct à la compilation. On peut donc à la volée changer la configuration d’un système pour ajuster son comportement. Un exemple de plugin : Le “main” de votre application qui instancie les implémentations concrètes de vos abstractions (interface).