Skip to content

Commit 4c043e5

Browse files
authored
translation: Add French translation for anti-corruption-layer & Builder (#3038)
* feat(fr): Add translation for anti-corruption-layer * feat(fr): Add translation for builder pattern
1 parent 7472d2f commit 4c043e5

File tree

2 files changed

+385
-0
lines changed

2 files changed

+385
-0
lines changed

Diff for: localization/fr/anti-corruption-layer/README.md

+180
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
---
2+
title: "Patron de conception Couche Anti-Corruption en Java : Assurer l'intégrité du système face aux systèmes hérités"
3+
shortTitle: Couche Anti-Corruption
4+
description: "Découvrez comment le patron de conception de la Couche Anti-Corruption (Anti-Corruption Layer Pattern) aide à découpler les sous-systèmes, à prévenir la corruption des données et à faciliter une intégration fluide dans les applications Java."
5+
category: Integration
6+
language: fr
7+
tag:
8+
- Architecture
9+
- Decoupling
10+
- Integration
11+
- Isolation
12+
- Layered architecture
13+
- Migration
14+
- Modernization
15+
- Refactoring
16+
- Wrapping
17+
---
18+
19+
## Aussi connu sous le nom de
20+
21+
* ACL
22+
* Couche d'interface
23+
* Couche de traduction
24+
25+
## Intention du modèle de conception de la couche anti-corruption
26+
27+
La couche anti-corruption (ACL) est un patron de conception essentiel dans le développement Java, en particulier pour l'intégration des systèmes et le maintien de l'intégrité des données. Implémentez une couche de façade ou d'adaptateur entre différents sous-systèmes qui ne partagent pas la même sémantique. Elle traduit entre différents formats de données et systèmes, garantissant que l'intégration entre les systèmes ne conduit pas à une corruption de la logique métier ou à une perte d'intégrité des données.
28+
29+
## Explication détaillée du patron de conception Couche Anti-Corruption avec des exemples concrets
30+
31+
Exemple concret
32+
33+
> Cet exemple montre comment la couche anti-corruption garantit une intégration fluide entre les systèmes hérités et les plateformes modernes, essentiel pour maintenir l'intégrité de la logique métier lors de la migration du système.
34+
>
35+
> Imaginez une grande entreprise de vente au détail qui passe d'un ancien logiciel de gestion des stocks à une nouvelle plateforme moderne. Le système hérité est utilisé depuis des décennies et contient des règles métier complexes et des formats de données incompatibles avec le nouveau système. Au lieu de connecter directement le nouveau système à l'ancien, l'entreprise implémente une couche anti-corruption (ACL).
36+
>
37+
> L'ACL agit comme un médiateur, traduisant et adaptant les données entre les deux systèmes. Lorsque le nouveau système demande des données d'inventaire, l'ACL traduit la requête dans un format compréhensible par le système hérité, récupère les données, puis les traduit à nouveau dans un format adapté au nouveau système. Cette approche garantit que le nouveau système reste indépendant des complexités du système hérité, évitant ainsi la corruption des données et de la logique métier tout en facilitant une transition en douceur.
38+
39+
En termes simples
40+
41+
> Le patron de conception Couche Anti-Corruption protège un système des complexités et des changements des systèmes externes en fournissant une couche de traduction intermédiaire.
42+
43+
[La documentation de Microsoft](https://learn.microsoft.com/fr-fr/azure/architecture/patterns/anti-corruption-layer) dit
44+
45+
> Implémentez une couche de façade ou d’adaptateur entre différents sous-systèmes qui ne partagent pas la même sémantique. Cette couche traduit les requêtes qu’un sous-système envoie à l’autre sous-système. Utilisez ce modèle pour vous assurer que la conception d’une application n’est pas limitée par les dépendances aux sous-systèmes externes. Ce modèle a d’abord été décrit par Eric Evans dans Domain-Driven Design (Conception orientée domaine).
46+
47+
## Exemple programmatique du patron de conception de Couche Anti-Corruption en Java
48+
49+
Le modèle ACL en Java fournit une couche intermédiaire qui traduit les formats de données, garantissant que l'intégration entre différents systèmes ne conduit pas à une corruption des données.
50+
51+
Voici 2 systèmes de commande de magasin : `Legacy` et `Modern`.
52+
53+
Ces systèmes ont des modèles de domaine différents et doivent fonctionner simultanément. Comme ils travaillent de manière indépendante, les commandes peuvent provenir soit du système `Legacy`, soit du système `Modern`. Par conséquent, le système qui reçoit la commande `orderLegacy` doit vérifier si cette commande est valide et non présente dans l'autre système. Ensuite, il peut placer la commande `orderLegacy` dans son propre système.
54+
55+
Mais pour cela, le système doit connaître le modèle de domaine de l'autre système et pour éviter cela, la couche anti-corruption (ACL) est introduite. L'ACL est une couche qui traduit le modèle de domaine du système `Legacy` en celui du système `Modern` et inversement. De plus, elle masque toutes les autres opérations avec l'autre système, découplant les systèmes.
56+
57+
Modèle de domaine du système `Legacy` :
58+
59+
```java
60+
public class LegacyOrder {
61+
private String id;
62+
private String customer;
63+
private String item;
64+
private String qty;
65+
private String price;
66+
}
67+
```
68+
69+
Modèle de domaine du système `Modern` :
70+
71+
```java
72+
public class ModernOrder {
73+
private String id;
74+
private Customer customer;
75+
76+
private Shipment shipment;
77+
78+
private String extra;
79+
}
80+
81+
public class Customer {
82+
private String address;
83+
}
84+
85+
public class Shipment {
86+
private String item;
87+
private String qty;
88+
private String price;
89+
}
90+
```
91+
92+
Couche anti-corruption :
93+
94+
```java
95+
public class AntiCorruptionLayer {
96+
97+
@Autowired
98+
private ModernShop modernShop;
99+
100+
@Autowired
101+
private LegacyShop legacyShop;
102+
103+
public Optional<LegacyOrder> findOrderInModernSystem(String id) {
104+
return modernShop.findOrder(id).map(o -> /* map to legacyOrder*/);
105+
}
106+
107+
public Optional<ModernOrder> findOrderInLegacySystem(String id) {
108+
return legacyShop.findOrder(id).map(o -> /* map to modernOrder*/);
109+
}
110+
111+
}
112+
```
113+
114+
La connexion entre les systèmes. Chaque fois que le système `Legacy` ou `Modern` doit communiquer avec l'autre, l'ACL doit être utilisée pour éviter de corrompre le modèle de domaine actuel. L'exemple ci-dessous montre comment le système `Legacy` passe une commande avec une validation du système `Modern`.
115+
116+
```java
117+
public class LegacyShop {
118+
@Autowired
119+
private AntiCorruptionLayer acl;
120+
121+
public void placeOrder(LegacyOrder legacyOrder) throws ShopException {
122+
123+
String id = legacyOrder.getId();
124+
125+
Optional<LegacyOrder> orderInModernSystem = acl.findOrderInModernSystem(id);
126+
127+
if (orderInModernSystem.isPresent()) {
128+
// la commande est déjà dans le système moderne
129+
} else {
130+
// passer la commande dans le système actuel
131+
}
132+
}
133+
}
134+
```
135+
## Quand utiliser le patron de conception Couche Anti-Corruption en Java
136+
137+
Utilisez ce modèle lorsque :
138+
139+
* Une migration est prévue en plusieurs étapes, mais l'intégration entre les nouveaux et les anciens systèmes doit être maintenue
140+
* Deux ou plusieurs sous-systèmes ont une sémantique différentes, mais doivent tout de même communiquer
141+
* Lors de l'intégration avec des systèmes hérités ou des systèmes externes où une intégration directe pourrait polluer le modèle de domaine du nouveau système
142+
* Dans des scénarios où différents sous-systèmes au sein d'un système plus large utilisent différents formats ou structures de données
143+
* Lorsqu'il est nécessaire de garantir un découplage lâche entre différents sous-systèmes ou services externes pour faciliter la maintenance et la scalabilité
144+
145+
## Tutoriels sur le patron de conception Couche Anti-Corruption en Java
146+
147+
* [Couche Anti-Corruption](https://learn.microsoft.com/fr-fr/azure/architecture/patterns/anti-corruption-layer)
148+
* [Patron de conception Couche Anti-Corruption](https://docs.aws.amazon.com/prescriptive-guidance/latest/cloud-design-patterns/acl.html)
149+
150+
## Applications concrètes du modèle de couche anti-corruption en Java
151+
152+
* Architectures microservices où les services individuels doivent communiquer sans être étroitement couplés aux schémas de données des autres
153+
* Intégration des systèmes d'entreprise, notamment lors de l'intégration des systèmes modernes avec des systèmes hérités
154+
* Dans des contextes délimités au sein de la Domain-Driven Design (DDD) pour maintenir l'intégrité d'un modèle de domaine lors de l'interaction avec des systèmes ou sous-systèmes externes
155+
156+
## Avantages et compromis du modèle de couche anti-corruption
157+
158+
Avantages :
159+
160+
* Protège l'intégrité du modèle de domaine en fournissant une frontière claire
161+
* Favorise le découplage lâche entre les systèmes, rendant le système plus résilient aux changements des systèmes externes
162+
* Facilite un code plus propre et plus facile à maintenir en isolant le code d'intégration de la logique métier
163+
164+
Compromis :
165+
166+
* Introduit une complexité supplémentaire et un potentiel de surcharge de performance en raison du processus de traduction
167+
* Nécessite un effort supplémentaire dans la conception et la mise en œuvre pour s'assurer que la couche est efficace sans devenir un goulet d'étranglement
168+
* Peut entraîner une duplication des modèles s'il n'est pas géré avec soin
169+
170+
## Patron de conception Java associés
171+
172+
* [Adaptateur (Adapter)](https://java-design-patterns.com/patterns/adapter/): La couche anti-corruption peut être implémentée en utilisant le modèle Adaptateur pour traduire entre différents formats ou structures de données
173+
* [Façade](https://java-design-patterns.com/patterns/facade/): La couche anti-corruption peut être vue comme une forme spécialisée du modèle Façade utilisée pour isoler différents sous-systèmes
174+
* [Passerelle (Gateway)](https://java-design-patterns.com/patterns/gateway/): La couche anti-corruption peut être utilisée comme une passerelle vers des systèmes externes pour fournir une interface unifiée
175+
176+
## Références et Crédits
177+
178+
* [Domain-Driven Design : Résoudre la complexité au cœur du logiciel](https://amzn.to/3vptcJz)
179+
* [Implémentation du Domain-Driven Design](https://amzn.to/3ISOSRA)
180+
* [Patterns of Enterprise Application Architecture (Modèles d'architecture des applications d'entreprise)](https://amzn.to/3WfKBPR)

0 commit comments

Comments
 (0)