From f01235b30a36235efe30dfcf9d120200f1e6cdc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Wed, 9 Apr 2025 21:27:42 +0300 Subject: [PATCH] docs: add notification diagram --- notification/README.md | 4 ++++ .../etc/notification-sequence-diagram.png | Bin 0 -> 36251 bytes 2 files changed, 4 insertions(+) create mode 100644 notification/etc/notification-sequence-diagram.png diff --git a/notification/README.md b/notification/README.md index e94421ff5..04feb01cb 100644 --- a/notification/README.md +++ b/notification/README.md @@ -32,6 +32,10 @@ In plain words > The Notification design pattern enables an object to automatically notify a list of interested observers about changes or events without knowing the specifics of the subscribers. +Sequence diagram + +![Notification sequence diagram](./etc/notification-sequence-diagram.png) + ## Programmatic Example of Notification Pattern in Java The Java Notification pattern is used to capture information passed between layers, validate the information, and return any errors to the presentation layer if needed. It reduces coupling between the producer and consumer of events, enhances flexibility and reusability of components, and allows for dynamic event subscription and unsubscription. diff --git a/notification/etc/notification-sequence-diagram.png b/notification/etc/notification-sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9c25992fa2a838d70d965ce53b5855884d7fdc GIT binary patch literal 36251 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 Tg(S2