From 35bae7e8394e5cb45c5dc8c310c57d2a40e309f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sat, 5 Apr 2025 20:41:32 +0300 Subject: [PATCH] docs: add anti-corruption layer sequence diagram --- anti-corruption-layer/README.md | 4 ++++ .../anti-corruption-layer-sequence-diagram.png | Bin 0 -> 33329 bytes 2 files changed, 4 insertions(+) create mode 100644 anti-corruption-layer/etc/anti-corruption-layer-sequence-diagram.png diff --git a/anti-corruption-layer/README.md b/anti-corruption-layer/README.md index c90571aaa..9b6042850 100644 --- a/anti-corruption-layer/README.md +++ b/anti-corruption-layer/README.md @@ -44,6 +44,10 @@ In plain words > Implement a façade or adapter layer between different subsystems that don't share the same semantics. This layer translates requests that one subsystem makes to the other subsystem. Use this pattern to ensure that an application's design is not limited by dependencies on outside subsystems. This pattern was first described by Eric Evans in Domain-Driven Design. +Sequence diagram + +![Anti-Corruption Layer sequence diagram](./etc/anti-corruption-layer-sequence-diagram.png "Anti-Corruption Layer sequence diagram") + ## Programmatic Example of Anti-Corruption Layer Pattern in Java The ACL design pattern in Java provides an intermediary layer that translates data formats, ensuring that integration between different systems does not lead to data corruption. diff --git a/anti-corruption-layer/etc/anti-corruption-layer-sequence-diagram.png b/anti-corruption-layer/etc/anti-corruption-layer-sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..835ff4e84a0fe9843b57f0500b13e5df92a73294 GIT binary patch literal 33329 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