From 4a96f2d2277efabf93911ece7fa4aadb833e29e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Thu, 6 Mar 2025 20:15:11 +0200 Subject: [PATCH] docs: add mvp architecture diagram --- model-view-presenter/README.md | 5 +++++ .../etc/mvp-architecture-diagram.png | Bin 0 -> 34155 bytes 2 files changed, 5 insertions(+) create mode 100644 model-view-presenter/etc/mvp-architecture-diagram.png diff --git a/model-view-presenter/README.md b/model-view-presenter/README.md index f3bbbb01f..58cafed55 100644 --- a/model-view-presenter/README.md +++ b/model-view-presenter/README.md @@ -43,6 +43,11 @@ Wikipedia says > Model–view–presenter (MVP) is a derivation of the model–view–controller (MVC) architectural pattern, and is used mostly for building user interfaces. In MVP, the presenter assumes the functionality of the "middle-man". In MVP, all presentation logic is pushed to the presenter. +Architecture diagram + +![Model-View-Presenter Architecture Diagram](./etc/mvp-architecture-diagram.png) + + ## Programmatic Example of Model-View-Presenter Pattern in Java The Model-View-Presenter (MVP) design pattern is a derivative of the well-known Model-View-Controller (MVC) pattern. It aims to separate the application's logic (Model), GUIs (View), and the way that the user's actions update the application's logic (Presenter). This separation of concerns makes the application easier to manage, extend, and test. diff --git a/model-view-presenter/etc/mvp-architecture-diagram.png b/model-view-presenter/etc/mvp-architecture-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..df324b0ab6b0644ece227d40e0647b7c964fc2b2 GIT binary patch literal 34155 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 sVTf-5_r016Xfv*RjnyjupV!}e=@M%u_bC