From 9340c2d37486e63e620b33979ed6889fe7dd64d2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 15 Jul 2024 20:27:27 -0400 Subject: [PATCH 01/26] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5f0f19f..1f705c0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# 🧩 Patterns for JavaScript & Node.js +# 🧩 ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ для JavaScript ΠΈ Node.js -> Rethinking GRASP (General Responsibility Assignment Software Patterns), SOLID (Single responsibility, Open–closed, Liskov substitution, Interface segregation, Dependency inversion), GoF (Gang of Four) patterns, for Frontend (browsers) & Backend (node.js, other runtimes) development with JavaScript and TypeScript +> ΠŸΠ΅Ρ€Π΅ΠΎΡΠΌΡ‹ΡΠ»Π΅Π½ΠΈΠ΅ GRASP (раздСлСния отвСтствСнности - General Responsibility Assignment Software Patterns), SOLID (СдинствСнной отвСтствСнности, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ-Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ, подстановки Лисков, раздСлСния интСрфСйсов, инвСрсии зависимостСй), GoF (Π‘Π°Π½Π΄Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… - Gang of Four) для Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° (Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) & Π±Π΅ΠΊΠ΅Π½Π΄Π° (node.js, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΡ‹) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° JavaScript ΠΈ TypeScript -Translations: +ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹: [EN](https://github.com/tshemsedinov/Patterns-JavaScript/tree/en), [UA](https://github.com/tshemsedinov/Patterns-JavaScript/tree/ua), [RU](https://github.com/tshemsedinov/Patterns-JavaScript/tree/ru). From 9efc1898a65c91abc0444075cf71a5c4112ab163 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 15 Jul 2024 21:47:07 -0400 Subject: [PATCH 02/26] Index and links --- README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/README.md b/README.md index 1f705c0..c450399 100644 --- a/README.md +++ b/README.md @@ -6,3 +6,52 @@ [EN](https://github.com/tshemsedinov/Patterns-JavaScript/tree/en), [UA](https://github.com/tshemsedinov/Patterns-JavaScript/tree/ua), [RU](https://github.com/tshemsedinov/Patterns-JavaScript/tree/ru). + +- Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP + - Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ экспСрт (Information expert) + - Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ (Creator) + - ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (Controller) + - ΠΠ΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ (Indirection) + - НизкоС Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ (Low coupling) + - Высокая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ (High cohesion) + - ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (Polymorphism) + - Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ (Protected variations) + - Чистая Π²Ρ‹Π΄ΡƒΠΌΠΊΠ° (Pure fabrication) +- Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) SOLID + - Single responsibility principle + - Open/closed principle + - Liskov substitution principle + - Interface segregation principle + - Dependency inversion principle +- ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ GoF + - ΠŸΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ + - Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory) + - [Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ (Builder)](https://github.com/HowProgrammingWorks/Builder) + - [Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Factory method)](https://github.com/HowProgrammingWorks/Factory) + - [ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ (Prototype)](https://github.com/HowProgrammingWorks/Prototype) + - [ΠžΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ° (Singleton)](https://github.com/HowProgrammingWorks/Singleton) + - Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ + - [АдаптСр (Adapter)](https://github.com/HowProgrammingWorks/Adapter) + - [ΠœΠΎΡΡ‚ (Bridge)](https://github.com/HowProgrammingWorks/Bridge) + - [ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ (Composite)](https://github.com/HowProgrammingWorks/Composite) + - Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ (Decorator) + - [Ѐасад (Facade)](https://github.com/HowProgrammingWorks/Facade) + - ЛСгковСс (Flyweight) + - [ΠŸΡ€ΠΎΠΊΡΠΈ (Proxy)](https://github.com/HowProgrammingWorks/Proxy) + - ΠŸΠΎΠ²Π΅Π΄Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ + - Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° обязанностСй (Chain of responsibility) + - [Chain of responsibility](https://github.com/HowProgrammingWorks/ChainOfResponsibility) + - Middleware + - [Команда (Command)](https://github.com/HowProgrammingWorks/Command) + - Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ (Interpreter) + - [Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ (Iterator)](https://github.com/HowProgrammingWorks/Iterator) + - ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΉ (Mediator) + - Π‘Π½ΠΈΠΌΠΎΠΊ (Memento) + - ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ (Observable Ρ‚Π° Observer, EventEmitter, EventTarget) + - [EventTarget and EventEmitter](https://github.com/HowProgrammingWorks/Events) + - [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) + - [ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ (Observer)](https://github.com/HowProgrammingWorks/Observer) + - БостояниС (State) + - [БтратСгия (Strategy)](https://github.com/HowProgrammingWorks/Strategy) + - Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Template method) + - ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor) From 7d73c6d66c7a1390dd37e8e3c9a8df3d9a806033 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 17 Jul 2024 18:59:40 -0400 Subject: [PATCH 03/26] Add links to video --- README.md | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index c450399..e35c652 100644 --- a/README.md +++ b/README.md @@ -7,23 +7,8 @@ [UA](https://github.com/tshemsedinov/Patterns-JavaScript/tree/ua), [RU](https://github.com/tshemsedinov/Patterns-JavaScript/tree/ru). -- Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - - Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ экспСрт (Information expert) - - Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ (Creator) - - ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (Controller) - - ΠΠ΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ (Indirection) - - НизкоС Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ (Low coupling) - - Высокая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ (High cohesion) - - ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (Polymorphism) - - Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ (Protected variations) - - Чистая Π²Ρ‹Π΄ΡƒΠΌΠΊΠ° (Pure fabrication) -- Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) SOLID - - Single responsibility principle - - Open/closed principle - - Liskov substitution principle - - Interface segregation principle - - Dependency inversion principle - ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ GoF + - 🧩 [GoF ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ для Node.js ΠΈ JavaScript (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ сСминара)](https://youtu.be/7TjzsZCQQqg) - ΠŸΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory) - [Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ (Builder)](https://github.com/HowProgrammingWorks/Builder) @@ -55,3 +40,23 @@ - [БтратСгия (Strategy)](https://github.com/HowProgrammingWorks/Strategy) - Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Template method) - ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor) +- Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP + - Вводная лСкция + - Π§Π°ΡΡ‚ΡŒ 1 - [GRASP для Node.js ΠΈ Javascript](https://youtu.be/vm8p4jIQwp4) + - Π§Π°ΡΡ‚ΡŒ 2 - скоро + - Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ экспСрт (Information expert) + - Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ (Creator) + - ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (Controller) + - ΠΠ΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ (Indirection) + - НизкоС Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ (Low coupling) + - Высокая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ (High cohesion) + - ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (Polymorphism) + - Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ (Protected variations) + - Чистая Π²Ρ‹Π΄ΡƒΠΌΠΊΠ° (Pure fabrication) +- Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) SOLID + - Вводная лСкция: [SOLID for Node.js and Javascript](https://youtu.be/B2guSV8EMn0) + - Single responsibility principle + - Open/closed principle + - Liskov substitution principle + - Interface segregation principle + - Dependency inversion principle From 802d51e2d643573fbfbc7af098929794e7267b96 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 17 Jul 2024 20:56:59 -0400 Subject: [PATCH 04/26] Add links to old lectures --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e35c652..9db915b 100644 --- a/README.md +++ b/README.md @@ -42,19 +42,22 @@ - ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor) - Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - Вводная лСкция + - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) - Π§Π°ΡΡ‚ΡŒ 1 - [GRASP для Node.js ΠΈ Javascript](https://youtu.be/vm8p4jIQwp4) - Π§Π°ΡΡ‚ΡŒ 2 - скоро - - Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ экспСрт (Information expert) + - [Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ экспСрт (Information expert)](https://youtu.be/cCHL329_As0) - Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ (Creator) - ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (Controller) - - ΠΠ΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ (Indirection) - - НизкоС Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ (Low coupling) + - [ΠΠ΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ (Indirection)](https://youtu.be/IGXdPOZ3Fyk) + - [НизкоС Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ (Low coupling)](https://youtu.be/IGXdPOZ3Fyk) - Высокая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ (High cohesion) - ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (Polymorphism) - Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ (Protected variations) - - Чистая Π²Ρ‹Π΄ΡƒΠΌΠΊΠ° (Pure fabrication) + - [Чистая Π²Ρ‹Π΄ΡƒΠΌΠΊΠ° (Pure fabrication)](https://youtu.be/CV577a0RHBM) + - [ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°](https://youtu.be/4AMVQ2-2DcM) - Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) SOLID - Вводная лСкция: [SOLID for Node.js and Javascript](https://youtu.be/B2guSV8EMn0) + - [SOLID вопросы Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ](https://youtu.be/-9OM6-6pZw8) - Single responsibility principle - Open/closed principle - Liskov substitution principle From e5e3c040716c0cbd89f4449b3f733296c182e9d8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 17 Jul 2024 20:57:28 -0400 Subject: [PATCH 05/26] Add translations --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9db915b..b2ab04c 100644 --- a/README.md +++ b/README.md @@ -58,8 +58,8 @@ - Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) SOLID - Вводная лСкция: [SOLID for Node.js and Javascript](https://youtu.be/B2guSV8EMn0) - [SOLID вопросы Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ](https://youtu.be/-9OM6-6pZw8) - - Single responsibility principle - - Open/closed principle - - Liskov substitution principle - - Interface segregation principle - - Dependency inversion principle + - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности (Single responsibility principle) + - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ открытости/закрытости (Open/closed principle) + - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Лисков (Liskov substitution principle) + - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйса (Interface segregation principle) + - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимостСй (Dependency inversion principle) From a2d0b80ec4e159ea70283690e6e32df2c4ee9ca7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 21 Jul 2024 08:49:03 -0400 Subject: [PATCH 06/26] Add solid videos --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b2ab04c..86f612e 100644 --- a/README.md +++ b/README.md @@ -58,8 +58,8 @@ - Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) SOLID - Вводная лСкция: [SOLID for Node.js and Javascript](https://youtu.be/B2guSV8EMn0) - [SOLID вопросы Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ](https://youtu.be/-9OM6-6pZw8) - - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности (Single responsibility principle) + - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности (Single responsibility principle)](https://youtu.be/o4bQywkBKOI) - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ открытости/закрытости (Open/closed principle) - - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Лисков (Liskov substitution principle) + - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Лисков (Liskov substitution principle)](https://youtu.be/RbhYxygxroc) - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйса (Interface segregation principle) - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимостСй (Dependency inversion principle) From 410b809a92057288a3363a9da0a19bd926b88d59 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 21 Jul 2024 09:08:05 -0400 Subject: [PATCH 07/26] Add emojis --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 86f612e..cf59cb2 100644 --- a/README.md +++ b/README.md @@ -7,15 +7,15 @@ [UA](https://github.com/tshemsedinov/Patterns-JavaScript/tree/ua), [RU](https://github.com/tshemsedinov/Patterns-JavaScript/tree/ru). -- ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ GoF - - 🧩 [GoF ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ для Node.js ΠΈ JavaScript (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ сСминара)](https://youtu.be/7TjzsZCQQqg) - - ΠŸΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ +- 🧩 ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ GoF + - πŸ“’ [GoF ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ для Node.js ΠΈ JavaScript (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ сСминара)](https://youtu.be/7TjzsZCQQqg) + - 🏭 ΠŸΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory) - [Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ (Builder)](https://github.com/HowProgrammingWorks/Builder) - [Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Factory method)](https://github.com/HowProgrammingWorks/Factory) - [ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ (Prototype)](https://github.com/HowProgrammingWorks/Prototype) - [ΠžΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ° (Singleton)](https://github.com/HowProgrammingWorks/Singleton) - - Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ + - 🀝 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - [АдаптСр (Adapter)](https://github.com/HowProgrammingWorks/Adapter) - [ΠœΠΎΡΡ‚ (Bridge)](https://github.com/HowProgrammingWorks/Bridge) - [ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ (Composite)](https://github.com/HowProgrammingWorks/Composite) @@ -23,7 +23,7 @@ - [Ѐасад (Facade)](https://github.com/HowProgrammingWorks/Facade) - ЛСгковСс (Flyweight) - [ΠŸΡ€ΠΎΠΊΡΠΈ (Proxy)](https://github.com/HowProgrammingWorks/Proxy) - - ΠŸΠΎΠ²Π΅Π΄Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ + - ⚑ ΠŸΠΎΠ²Π΅Π΄Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° обязанностСй (Chain of responsibility) - [Chain of responsibility](https://github.com/HowProgrammingWorks/ChainOfResponsibility) - Middleware @@ -40,8 +40,8 @@ - [БтратСгия (Strategy)](https://github.com/HowProgrammingWorks/Strategy) - Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Template method) - ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor) -- Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - - Вводная лСкция +- 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP + - πŸ“’ Вводная лСкция - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) - Π§Π°ΡΡ‚ΡŒ 1 - [GRASP для Node.js ΠΈ Javascript](https://youtu.be/vm8p4jIQwp4) - Π§Π°ΡΡ‚ΡŒ 2 - скоро @@ -55,8 +55,8 @@ - Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ (Protected variations) - [Чистая Π²Ρ‹Π΄ΡƒΠΌΠΊΠ° (Pure fabrication)](https://youtu.be/CV577a0RHBM) - [ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°](https://youtu.be/4AMVQ2-2DcM) -- Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) SOLID - - Вводная лСкция: [SOLID for Node.js and Javascript](https://youtu.be/B2guSV8EMn0) +- 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) SOLID + - πŸ“’ Вводная лСкция: [SOLID for Node.js and Javascript](https://youtu.be/B2guSV8EMn0) - [SOLID вопросы Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ](https://youtu.be/-9OM6-6pZw8) - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности (Single responsibility principle)](https://youtu.be/o4bQywkBKOI) - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ открытости/закрытости (Open/closed principle) From 5e2a29b1d466e614dbc0c4735a4f58fa13ddb583 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 26 Jul 2024 06:15:11 -0400 Subject: [PATCH 08/26] Fix Prototype --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf59cb2..42c51cf 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ - Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory) - [Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ (Builder)](https://github.com/HowProgrammingWorks/Builder) - [Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Factory method)](https://github.com/HowProgrammingWorks/Factory) - - [ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ (Prototype)](https://github.com/HowProgrammingWorks/Prototype) + - [ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ (Prototype)](https://github.com/HowProgrammingWorks/PrototypePattern) Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с [ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ](https://github.com/HowProgrammingWorks/Prototype) - [ΠžΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ° (Singleton)](https://github.com/HowProgrammingWorks/Singleton) - 🀝 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - [АдаптСр (Adapter)](https://github.com/HowProgrammingWorks/Adapter) From 626ecf99416bf34aa9005fd506016876187f1fad Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 30 Jul 2024 20:05:02 -0400 Subject: [PATCH 09/26] Add Visitor --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 42c51cf..c032cc0 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ - БостояниС (State) - [БтратСгия (Strategy)](https://github.com/HowProgrammingWorks/Strategy) - Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Template method) - - ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor) + - [ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor)](https://github.com/HowProgrammingWorks/Visitor) - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - πŸ“’ Вводная лСкция - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) From 825779334444cb93b2eee6ad394784ac01c8bab2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 31 Jul 2024 17:19:12 -0400 Subject: [PATCH 10/26] Add Flyweight --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c032cc0..d82266b 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ - [ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ (Composite)](https://github.com/HowProgrammingWorks/Composite) - Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ (Decorator) - [Ѐасад (Facade)](https://github.com/HowProgrammingWorks/Facade) - - ЛСгковСс (Flyweight) + - [ЛСгковСс (Flyweight)](https://github.com/HowProgrammingWorks/Flyweight) - [ΠŸΡ€ΠΎΠΊΡΠΈ (Proxy)](https://github.com/HowProgrammingWorks/Proxy) - ⚑ ΠŸΠΎΠ²Π΅Π΄Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° обязанностСй (Chain of responsibility) From 21e75becf305262c0b5e3d43273445d1b9a2e3f1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 19 Dec 2024 21:43:43 -0500 Subject: [PATCH 11/26] Update [ru] README.md --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index d82266b..3d84b08 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ - 🧩 ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ GoF - πŸ“’ [GoF ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ для Node.js ΠΈ JavaScript (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ сСминара)](https://youtu.be/7TjzsZCQQqg) - 🏭 ΠŸΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - - Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory) + - [Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory)](https://github.com/HowProgrammingWorks/AbstractFactory) - [Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ (Builder)](https://github.com/HowProgrammingWorks/Builder) - [Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Factory method)](https://github.com/HowProgrammingWorks/Factory) - [ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ (Prototype)](https://github.com/HowProgrammingWorks/PrototypePattern) Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с [ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ](https://github.com/HowProgrammingWorks/Prototype) @@ -19,26 +19,26 @@ - [АдаптСр (Adapter)](https://github.com/HowProgrammingWorks/Adapter) - [ΠœΠΎΡΡ‚ (Bridge)](https://github.com/HowProgrammingWorks/Bridge) - [ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ (Composite)](https://github.com/HowProgrammingWorks/Composite) - - Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ (Decorator) + - Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ (Decorator) ΠΈ [ΠžΠ±Π΅Ρ€Ρ‚ΠΊΠ° (Wrapper)](https://github.com/HowProgrammingWorks/Wrapper) - [Ѐасад (Facade)](https://github.com/HowProgrammingWorks/Facade) - [ЛСгковСс (Flyweight)](https://github.com/HowProgrammingWorks/Flyweight) - [ΠŸΡ€ΠΎΠΊΡΠΈ (Proxy)](https://github.com/HowProgrammingWorks/Proxy) - ⚑ ΠŸΠΎΠ²Π΅Π΄Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° обязанностСй (Chain of responsibility) - [Chain of responsibility](https://github.com/HowProgrammingWorks/ChainOfResponsibility) - - Middleware + - [Middleware](https://www.youtube.com/watch?v=RS8x73z4csI) - [Команда (Command)](https://github.com/HowProgrammingWorks/Command) - - Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ (Interpreter) + - [Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ (Interpreter)](https://github.com/HowProgrammingWorks/Interpreter) - [Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ (Iterator)](https://github.com/HowProgrammingWorks/Iterator) - - ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΉ (Mediator) - - Π‘Π½ΠΈΠΌΠΎΠΊ (Memento) + - [ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΉ (Mediator)](https://github.com/HowProgrammingWorks/Mediator) + - [Π‘Π½ΠΈΠΌΠΎΠΊ (Memento)](https://github.com/HowProgrammingWorks/Memento) - ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ (Observable Ρ‚Π° Observer, EventEmitter, EventTarget) - [EventTarget and EventEmitter](https://github.com/HowProgrammingWorks/Events) - [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) - [ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ (Observer)](https://github.com/HowProgrammingWorks/Observer) - - БостояниС (State) + - [БостояниС (State)](https://github.com/HowProgrammingWorks/State) - [БтратСгия (Strategy)](https://github.com/HowProgrammingWorks/Strategy) - - Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Template method) + - [Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Template method)](https://github.com/HowProgrammingWorks/TemplateMethod) - [ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor)](https://github.com/HowProgrammingWorks/Visitor) - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - πŸ“’ Вводная лСкция From b2722ef027b80fc910342adbb2bc7594c316fcb8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 20 Dec 2024 15:14:51 -0500 Subject: [PATCH 12/26] Add SOLID examples --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3d84b08..dbe0662 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ - πŸ“’ Вводная лСкция: [SOLID for Node.js and Javascript](https://youtu.be/B2guSV8EMn0) - [SOLID вопросы Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ](https://youtu.be/-9OM6-6pZw8) - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности (Single responsibility principle)](https://youtu.be/o4bQywkBKOI) - - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ открытости/закрытости (Open/closed principle) + - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ открытости/закрытости (Open/closed principle)](https://github.com/HowProgrammingWorks/OpenClosed) - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Лисков (Liskov substitution principle)](https://youtu.be/RbhYxygxroc) - - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйса (Interface segregation principle) - - ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимостСй (Dependency inversion principle) + - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйса (Interface segregation principle)](https://github.com/HowProgrammingWorks/InterfaceSegregation) + - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимостСй (Dependency inversion principle)](https://github.com/HowProgrammingWorks/DependencyInversion) From ff2f2c7508c8971018a97d9047d4cb89b818ebb3 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 26 Mar 2025 19:24:02 -0400 Subject: [PATCH 13/26] Add short explanation --- README.md | 61 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index dbe0662..5f7c537 100644 --- a/README.md +++ b/README.md @@ -10,36 +10,41 @@ - 🧩 ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ GoF - πŸ“’ [GoF ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ для Node.js ΠΈ JavaScript (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ сСминара)](https://youtu.be/7TjzsZCQQqg) - 🏭 ΠŸΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - - [Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory)](https://github.com/HowProgrammingWorks/AbstractFactory) - - [Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ (Builder)](https://github.com/HowProgrammingWorks/Builder) - - [Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Factory method)](https://github.com/HowProgrammingWorks/Factory) - - [ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ (Prototype)](https://github.com/HowProgrammingWorks/PrototypePattern) Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с [ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ](https://github.com/HowProgrammingWorks/Prototype) - - [ΠžΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ° (Singleton)](https://github.com/HowProgrammingWorks/Singleton) + - [Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory)](https://github.com/HowProgrammingWorks/AbstractFactory) β€” создаСт связанныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· сСмСйств, Π±Π΅Π· указания ΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. + - [Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ (Builder)](https://github.com/HowProgrammingWorks/Builder) β€” пошаговая сборка слоТного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, часто с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡Π΅ΠΈΠ½ΠΈΠ½Π³Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Query Builder ΠΈΠ»ΠΈ Form Generator. + - [Π€Π°Π±Ρ€ΠΈΠΊΠ° (Factory)](https://github.com/HowProgrammingWorks/Factory) β€” функция ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами: сборки ΠΏΠΎ частям ΠΈΠ· Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‡Π΅Ρ€Π΅Π· примСси, setPrototypeOf. + - Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Factory method) β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½ΡƒΡŽ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ для создания экзСмпляра, Π² JavaScript это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· if, switch ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΎΡ€ конструктора ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. + - [ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ (Prototype)](https://github.com/HowProgrammingWorks/PrototypePattern) β€” ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ экзСмпляра, для экономии рСсурсов Π½Π° созданиС (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с [ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌ наслСдованиСм](https://github.com/HowProgrammingWorks/Prototype), ΠΎΠ½ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ Flyweight). + - [Flyweight](https://github.com/HowProgrammingWorks/Flyweight) β€” экономия выдСлСния памяти для Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· проброс доступа ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ (раздСляСмому) ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ инстанса. + - [ΠžΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ° (Singleton)](https://github.com/HowProgrammingWorks/Singleton) β€” Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ доступ ΠΊ СдинствСнному экзСмпляру, часто ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Π°Π½Ρ‚ΠΈ-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ, ΠΏΡ€ΠΎΡ‰Π΅ всСго Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· кэш систСмы ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ESM/CJS. + - [Object Pool](https://github.com/HowProgrammingWorks/Pool) β€” ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Π·Π°Ρ€Π°Π½Π΅Π΅ созданных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для экономии рСсурсов ΠΏΡ€ΠΈ частом создании ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠΈ. - 🀝 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - - [АдаптСр (Adapter)](https://github.com/HowProgrammingWorks/Adapter) - - [ΠœΠΎΡΡ‚ (Bridge)](https://github.com/HowProgrammingWorks/Bridge) - - [ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ (Composite)](https://github.com/HowProgrammingWorks/Composite) - - Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ (Decorator) ΠΈ [ΠžΠ±Π΅Ρ€Ρ‚ΠΊΠ° (Wrapper)](https://github.com/HowProgrammingWorks/Wrapper) - - [Ѐасад (Facade)](https://github.com/HowProgrammingWorks/Facade) - - [ЛСгковСс (Flyweight)](https://github.com/HowProgrammingWorks/Flyweight) - - [ΠŸΡ€ΠΎΠΊΡΠΈ (Proxy)](https://github.com/HowProgrammingWorks/Proxy) + - [АдаптСр (Adapter)](https://github.com/HowProgrammingWorks/Adapter) β€” ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΡ€, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ нСсовмСстимый интСрфСйс Π² совмСстимый, позволяя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сторонний ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π±Π΅Π· измСнСния Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. + - [ΠžΠ±Π΅Ρ€Ρ‚ΠΊΠ° (Wrapper)](https://github.com/HowProgrammingWorks/Wrapper) β€” ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° Π½Π°Π΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ с пробросом Π²Ρ‹Π·ΠΎΠ²Π° (Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ повСдСния, частный случай ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Adapter. + - Boxing β€” ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ для добавлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ интСрфСйсов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΡΡƒΠ·ΠΈΡ‚ΡŒ String Π΄ΠΎ AddressString. + - Decorator β€” динамичСски Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π΅Π· наслСдования, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис, ΠΏΠΎ сути добавляСт ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅. + - [ΠŸΡ€ΠΎΠΊΡΠΈ (Proxy)](https://github.com/HowProgrammingWorks/Proxy) β€” ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, пСрСхватывая Π²Ρ‹Π·ΠΎΠ²Ρ‹, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для Π»Π΅Π½ΠΈΠ²ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ бСзопасности, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² GoF ΠΈΠ»ΠΈ встроСнным Π² JavaScript Proxy. + - [ΠœΠΎΡΡ‚ (Bridge)](https://github.com/HowProgrammingWorks/Bridge) β€” Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΉ абстракций Π·Π° счСт ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ, позволяя ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ нСзависимо. + - [ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ (Composite)](https://github.com/HowProgrammingWorks/Composite) β€” Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, DOM ΠΈΠ»ΠΈ файловая систСма. + - [Ѐасад (Facade)](https://github.com/HowProgrammingWorks/Facade) β€” ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ доступ ΠΊ слоТной систСмС, прСдоставляя ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŽ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ) Π΅Π΄ΠΈΠ½Ρ‹ΠΉ ΠΈ понятный интСрфСйс, для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈ сокрытия слоТности. + - [ЛСгковСс (Flyweight)](https://github.com/HowProgrammingWorks/Flyweight) β€” экономия выдСлСния памяти для Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· проброс доступа ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ (раздСляСмому) ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ инстанса. - ⚑ ΠŸΠΎΠ²Π΅Π΄Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - - Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° обязанностСй (Chain of responsibility) - - [Chain of responsibility](https://github.com/HowProgrammingWorks/ChainOfResponsibility) - - [Middleware](https://www.youtube.com/watch?v=RS8x73z4csI) - - [Команда (Command)](https://github.com/HowProgrammingWorks/Command) - - [Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ (Interpreter)](https://github.com/HowProgrammingWorks/Interpreter) - - [Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ (Iterator)](https://github.com/HowProgrammingWorks/Iterator) - - [ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΉ (Mediator)](https://github.com/HowProgrammingWorks/Mediator) - - [Π‘Π½ΠΈΠΌΠΎΠΊ (Memento)](https://github.com/HowProgrammingWorks/Memento) - - ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ (Observable Ρ‚Π° Observer, EventEmitter, EventTarget) - - [EventTarget and EventEmitter](https://github.com/HowProgrammingWorks/Events) - - [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) - - [ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ (Observer)](https://github.com/HowProgrammingWorks/Observer) - - [БостояниС (State)](https://github.com/HowProgrammingWorks/State) - - [БтратСгия (Strategy)](https://github.com/HowProgrammingWorks/Strategy) - - [Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Template method)](https://github.com/HowProgrammingWorks/TemplateMethod) - - [ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor)](https://github.com/HowProgrammingWorks/Visitor) + - [Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° обязанностСй (Chain of responsibility)](https://github.com/HowProgrammingWorks/ChainOfResponsibility) β€” ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° управлСния ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² для Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ отвСтствСнного, всС Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚, Π½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½. + - [Middleware](https://www.youtube.com/watch?v=RS8x73z4csI) β€” Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠ°ΠΊ CoR, Π½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ дальшС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π³ΠΎΠ½ΠΊΠ΅, ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ, ошибкам. + - [Команда (Command)](https://github.com/HowProgrammingWorks/Command) β€” инкапсулируСт дСйствиС (запрос исполнСния) ΠΈ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎΠ± ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŽ, ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΈ Ρ‚.Π΄. + - [Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ (Interpreter)](https://github.com/HowProgrammingWorks/Interpreter) β€” рСализация языка (DSL - domain specific language) ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΎΡ€ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² AST (абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ) с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. + - [Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ (Iterator)](https://github.com/HowProgrammingWorks/Iterator) β€” ΠΎΠ±Ρ…ΠΎΠ΄ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° поэлСмСнтно, Π±Π΅Π· доступа ΠΊΠΎ всСм Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² GoF, Π½ΠΎ Π² JavaScript Π΅ΡΡ‚ΡŒ встроСнныС Iterator ΠΈ AsyncIterator. + - [ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΉ (Mediator)](https://github.com/HowProgrammingWorks/Mediator) β€” оптимизация взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ N ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Π±Ρ‹ N * (N - 1) / 2 связСй, Π° цСнтрализация взаимодСйствия сниТаСт Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π΄ΠΎ N. + - [Π‘Π½ΠΈΠΌΠΎΠΊ (Memento)](https://github.com/HowProgrammingWorks/Memento) β€” сохранСниС ΠΈ восстановлСниС истории снимков состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π±Π΅Π· прямого доступа ΠΊ самому ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ. + - [ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ (Observable)](https://github.com/HowProgrammingWorks/Observer) β€” ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ подписчиков ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. + - [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) для Node.js: Observable + listener + - [EventTarget](https://github.com/HowProgrammingWorks/Events) для Web API: EventTarget + Event (CustomEvent) + listener + - [Signal](https://github.com/HowProgrammingWorks/Signals) + - [БостояниС (State)](https://github.com/HowProgrammingWorks/State) β€” рСализация ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° (Automaton ΠΈΠ»ΠΈ FSM), Π³Π΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ - это ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹, Π° состояниС добавляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ мСняСтся Π½Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°Ρ…. + - [БтратСгия (Strategy)](https://github.com/HowProgrammingWorks/Strategy) β€” Π²Ρ‹Π±ΠΎΡ€ взаимозамСняСмого повСдСния Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², классов. + - [Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Template method)](https://github.com/HowProgrammingWorks/TemplateMethod) β€” фиксируСт шаги Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, позволяя подклассам ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ шаги, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ шаги ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΊΠ°ΠΊ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. + - [ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor)](https://github.com/HowProgrammingWorks/Visitor) β€” позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π±Π΅Π· измСнСния ΠΈΡ… классов, раздСляя структуру ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½Π° нСсколько абстракций. + - [ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ конструктор (Revealing Constructor)](https://github.com/HowProgrammingWorks/RevealingConstructor) - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ повСдСния Π±Π΅Π· наслСдования, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ повСдСния Π² конструктор Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, содСрТащСго ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π΅Π³ΠΎ описаниС. - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - πŸ“’ Вводная лСкция - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) From 070d37a12cce4fe2b83971156e81892c5146cc6c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 27 Mar 2025 08:07:11 -0400 Subject: [PATCH 14/26] Fix caption --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5f7c537..4bbb7da 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# 🧩 ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ для JavaScript ΠΈ Node.js +# 🧩 ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ для JavaScript, TypeScript ΠΈ Node.js > ΠŸΠ΅Ρ€Π΅ΠΎΡΠΌΡ‹ΡΠ»Π΅Π½ΠΈΠ΅ GRASP (раздСлСния отвСтствСнности - General Responsibility Assignment Software Patterns), SOLID (СдинствСнной отвСтствСнности, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ-Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ, подстановки Лисков, раздСлСния интСрфСйсов, инвСрсии зависимостСй), GoF (Π‘Π°Π½Π΄Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… - Gang of Four) для Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° (Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) & Π±Π΅ΠΊΠ΅Π½Π΄Π° (node.js, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΡ‹) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° JavaScript ΠΈ TypeScript @@ -7,7 +7,7 @@ [UA](https://github.com/tshemsedinov/Patterns-JavaScript/tree/ua), [RU](https://github.com/tshemsedinov/Patterns-JavaScript/tree/ru). -- 🧩 ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ GoF +- 🧩 ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹ - πŸ“’ [GoF ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ для Node.js ΠΈ JavaScript (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ сСминара)](https://youtu.be/7TjzsZCQQqg) - 🏭 ΠŸΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - [Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory)](https://github.com/HowProgrammingWorks/AbstractFactory) β€” создаСт связанныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· сСмСйств, Π±Π΅Π· указания ΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. From 491818a6f4edd9d42433cabb4608cb01e6186f5d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 27 Mar 2025 11:06:38 -0400 Subject: [PATCH 15/26] Fix spelling --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4bbb7da..fb97437 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ - [Команда (Command)](https://github.com/HowProgrammingWorks/Command) β€” инкапсулируСт дСйствиС (запрос исполнСния) ΠΈ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎΠ± ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŽ, ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΈ Ρ‚.Π΄. - [Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ (Interpreter)](https://github.com/HowProgrammingWorks/Interpreter) β€” рСализация языка (DSL - domain specific language) ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΎΡ€ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² AST (абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ) с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. - [Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ (Iterator)](https://github.com/HowProgrammingWorks/Iterator) β€” ΠΎΠ±Ρ…ΠΎΠ΄ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° поэлСмСнтно, Π±Π΅Π· доступа ΠΊΠΎ всСм Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² GoF, Π½ΠΎ Π² JavaScript Π΅ΡΡ‚ΡŒ встроСнныС Iterator ΠΈ AsyncIterator. - - [ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΉ (Mediator)](https://github.com/HowProgrammingWorks/Mediator) β€” оптимизация взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ N ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Π±Ρ‹ N * (N - 1) / 2 связСй, Π° цСнтрализация взаимодСйствия сниТаСт Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π΄ΠΎ N. + - [ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΊ (Mediator)](https://github.com/HowProgrammingWorks/Mediator) β€” оптимизация взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ N ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Π±Ρ‹ N * (N - 1) / 2 связСй, Π° цСнтрализация взаимодСйствия сниТаСт Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π΄ΠΎ N. - [Π‘Π½ΠΈΠΌΠΎΠΊ (Memento)](https://github.com/HowProgrammingWorks/Memento) β€” сохранСниС ΠΈ восстановлСниС истории снимков состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π±Π΅Π· прямого доступа ΠΊ самому ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ. - [ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ (Observable)](https://github.com/HowProgrammingWorks/Observer) β€” ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ подписчиков ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. - [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) для Node.js: Observable + listener From 7aa2d0fbf1cfbce93467143877a122e84edd928b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 31 Mar 2025 05:14:38 -0400 Subject: [PATCH 16/26] Add translation --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index fb97437..5d1085c 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,8 @@ - [Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Template method)](https://github.com/HowProgrammingWorks/TemplateMethod) β€” фиксируСт шаги Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, позволяя подклассам ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ шаги, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ шаги ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΊΠ°ΠΊ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. - [ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor)](https://github.com/HowProgrammingWorks/Visitor) β€” позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π±Π΅Π· измСнСния ΠΈΡ… классов, раздСляя структуру ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½Π° нСсколько абстракций. - [ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ конструктор (Revealing Constructor)](https://github.com/HowProgrammingWorks/RevealingConstructor) - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ повСдСния Π±Π΅Π· наслСдования, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ повСдСния Π² конструктор Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, содСрТащСго ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π΅Π³ΠΎ описаниС. + - Актор (Actor) – Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, взаимодСйствуя асинхронно Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сообщСний Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡƒΡ‚Ρ‘ΠΌ изоляции состояния Π°ΠΊΡ‚ΠΎΡ€Π°. + - Π Π΅Π°ΠΊΡ‚ΠΎΡ€ (Reactor, event-loop) – ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ события синхронно, помСщая ΠΈΡ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ направляя зарСгистрированным ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ²Π΅Ρ€Ρ… синхронного Ρ†ΠΈΠΊΠ»Π° событий. Часто примСняСтся Π² систСмах с интСнсивным I/O, упрощая ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ событиями. - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - πŸ“’ Вводная лСкция - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) From 30ad5f7e7db72fbf720fa6fc3f826a7fc69c8ef1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 3 Apr 2025 03:40:09 -0400 Subject: [PATCH 17/26] Add ru links and descriptions --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5d1085c..49cf86d 100644 --- a/README.md +++ b/README.md @@ -45,8 +45,9 @@ - [Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Template method)](https://github.com/HowProgrammingWorks/TemplateMethod) β€” фиксируСт шаги Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, позволяя подклассам ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ шаги, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ шаги ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΊΠ°ΠΊ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. - [ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ (Visitor)](https://github.com/HowProgrammingWorks/Visitor) β€” позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π±Π΅Π· измСнСния ΠΈΡ… классов, раздСляя структуру ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½Π° нСсколько абстракций. - [ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ конструктор (Revealing Constructor)](https://github.com/HowProgrammingWorks/RevealingConstructor) - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ повСдСния Π±Π΅Π· наслСдования, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ повСдСния Π² конструктор Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, содСрТащСго ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π΅Π³ΠΎ описаниС. - - Актор (Actor) – Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, взаимодСйствуя асинхронно Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сообщСний Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡƒΡ‚Ρ‘ΠΌ изоляции состояния Π°ΠΊΡ‚ΠΎΡ€Π°. - - Π Π΅Π°ΠΊΡ‚ΠΎΡ€ (Reactor, event-loop) – ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ события синхронно, помСщая ΠΈΡ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ направляя зарСгистрированным ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ²Π΅Ρ€Ρ… синхронного Ρ†ΠΈΠΊΠ»Π° событий. Часто примСняСтся Π² систСмах с интСнсивным I/O, упрощая ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ событиями. + - [Actor](https://github.com/HowProgrammingWorks/Actor) β€” Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, взаимодСйствуя асинхронно Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сообщСний Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡƒΡ‚Ρ‘ΠΌ изоляции состояния Π°ΠΊΡ‚ΠΎΡ€Π°. + - [Reactor (event-loop)](https://github.com/HowProgrammingWorks/Reactor) β€” ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ события синхронно, помСщая ΠΈΡ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ направляя зарСгистрированным ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ²Π΅Ρ€Ρ… синхронного Ρ†ΠΈΠΊΠ»Π° событий. Часто примСняСтся Π² систСмах с интСнсивным I/O, упрощая ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ событиями. + - [Proactor](https://github.com/HowProgrammingWorks/Proactor) β€” Π¦ΠΈΠΊΠ» событий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ внСшним Π°Π³Π΅Π½Ρ‚ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, I/O подсистСмой), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (возвращая Π΄Π°Π½Π½Ρ‹Π΅ Π² callback). - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - πŸ“’ Вводная лСкция - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) From 8f5995c412a9948cf6a7874012ff17450f04955a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 10 Apr 2025 16:19:49 -0400 Subject: [PATCH 18/26] Add data access patterns --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 49cf86d..40c7e0e 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,19 @@ - [Actor](https://github.com/HowProgrammingWorks/Actor) β€” Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, взаимодСйствуя асинхронно Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сообщСний Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡƒΡ‚Ρ‘ΠΌ изоляции состояния Π°ΠΊΡ‚ΠΎΡ€Π°. - [Reactor (event-loop)](https://github.com/HowProgrammingWorks/Reactor) β€” ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ события синхронно, помСщая ΠΈΡ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ направляя зарСгистрированным ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ²Π΅Ρ€Ρ… синхронного Ρ†ΠΈΠΊΠ»Π° событий. Часто примСняСтся Π² систСмах с интСнсивным I/O, упрощая ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ событиями. - [Proactor](https://github.com/HowProgrammingWorks/Proactor) β€” Π¦ΠΈΠΊΠ» событий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ внСшним Π°Π³Π΅Π½Ρ‚ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, I/O подсистСмой), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (возвращая Π΄Π°Π½Π½Ρ‹Π΅ Π² callback). +- πŸ—ƒοΈ Π¨Π°Π±Π»ΠΎΠ½Ρ‹ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ + - [Transaction Script](https://github.com/HowProgrammingWorks/TransactionScript) β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ шаблон, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ каТдая бизнСс-опСрация рСализуСтся ΠΊΠ°ΠΊ функция (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ»ΠΈ скрипт). + - Pattern SAGA β€” шаблон распрСдСлённой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слоТный бизнСс-процСсс разбиваСтся Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°Π»Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ дСйствиС Π½Π° случай сбоя. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распрСдСлённых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. + - Unit of Work β€” шаблон отслСТиваСт измСнСния Π² бизнСс-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ сохранСниС ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρƒ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² ORM ΠΈΠ»ΠΈ Repository, инкапсулируя всю Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. + - Table Module β€” шаблон, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ вся домСнная Π»ΠΎΠ³ΠΈΠΊΠ°, связанная с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, инкапсулируСтся Π² ΠΎΠ΄Π½ΠΎΠΌ классС ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅, ΠΏΡ€ΠΈ этом строки Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ простыС Π΄Π°Π½Π½Ρ‹Π΅. + - [Value Object](https://github.com/HowProgrammingWorks/ValueObject) β€” нСизмСняСмый, ΡΠ°ΠΌΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π² Π΄ΠΎΠΌΠ΅Π½Π΅ Π±Π΅Π· ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выраТСния Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΈ согласованности Π»ΠΎΠ³ΠΈΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, сравнСния ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² типобСзопасной, явно Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅. + - [Null Object](https://github.com/HowProgrammingWorks/ValueObject) β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ стандартный интСрфСйс, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Β«do-nothingΒ». ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для избСТания ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π½Π° null, упрощСния Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ обСспСчСния ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠΉ бСзопасности. ЯвляСтся Π·Π°ΠΌΠ΅Π½ΠΎΠΉ дСйствия "ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ", ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‰Π΅ΠΉ условныС конструкции ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· Π³Π²Π°Ρ€Π΄Ρ‹. + - [Active Record](https://github.com/HowProgrammingWorks/ActiveRecord) β€” Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ запись Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для нСпосрСдствСнного выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ CRUD (созданиС, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅) ΠΈ спСцифичных запросов ΠΊ сСбС. + - Data access object (DAO) β€” абстракция, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ интСрфСйс для сохранСния ΠΈ извлСчСния Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², изолируя Π΄ΠΎΠΌΠ΅Π½Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. + - Data transfer object (DTO) β€” Π°Π½Π΅ΠΌΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅) Π±Π΅Π· Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ повСдСния, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ структурированных Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ слоями, модулями, подсистСмами ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ. + - Data Access Layer (DAL) β€” слой, Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ доступ ΠΊ мноТСству DAO ΠΈΠ»ΠΈ сырых источников Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ шаблон Facade. Часто Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ трансформации Π΄Π°Π½Π½Ρ‹Ρ…. + - [Repository](https://github.com/HowProgrammingWorks/Repository) β€” Π΄ΠΎΠΌΠ΅Π½Π½ΠΎ-цСнтричная абстракция для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ сущности, Π° Π½Π΅ сырыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ DTO. + - Π‘ΠΌ. Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹: Template method, Actor, State, Memento - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - πŸ“’ Вводная лСкция - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) From 34633d33690067526e4b734e264bb0e0685167ae Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 10 Apr 2025 16:20:30 -0400 Subject: [PATCH 19/26] Fix nesting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 40c7e0e..2e3f9d3 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ - [Actor](https://github.com/HowProgrammingWorks/Actor) β€” Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, взаимодСйствуя асинхронно Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сообщСний Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡƒΡ‚Ρ‘ΠΌ изоляции состояния Π°ΠΊΡ‚ΠΎΡ€Π°. - [Reactor (event-loop)](https://github.com/HowProgrammingWorks/Reactor) β€” ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ события синхронно, помСщая ΠΈΡ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ направляя зарСгистрированным ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ²Π΅Ρ€Ρ… синхронного Ρ†ΠΈΠΊΠ»Π° событий. Часто примСняСтся Π² систСмах с интСнсивным I/O, упрощая ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ событиями. - [Proactor](https://github.com/HowProgrammingWorks/Proactor) β€” Π¦ΠΈΠΊΠ» событий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ внСшним Π°Π³Π΅Π½Ρ‚ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, I/O подсистСмой), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (возвращая Π΄Π°Π½Π½Ρ‹Π΅ Π² callback). -- πŸ—ƒοΈ Π¨Π°Π±Π»ΠΎΠ½Ρ‹ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ + - πŸ—ƒοΈ Π¨Π°Π±Π»ΠΎΠ½Ρ‹ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ - [Transaction Script](https://github.com/HowProgrammingWorks/TransactionScript) β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ шаблон, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ каТдая бизнСс-опСрация рСализуСтся ΠΊΠ°ΠΊ функция (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ»ΠΈ скрипт). - Pattern SAGA β€” шаблон распрСдСлённой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слоТный бизнСс-процСсс разбиваСтся Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°Π»Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ дСйствиС Π½Π° случай сбоя. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распрСдСлённых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. - Unit of Work β€” шаблон отслСТиваСт измСнСния Π² бизнСс-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ сохранСниС ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρƒ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² ORM ΠΈΠ»ΠΈ Repository, инкапсулируя всю Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. From 6027dacc989ac807b7b64b21411718c71da5031c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 13 Apr 2025 16:58:33 -0400 Subject: [PATCH 20/26] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2e3f9d3..77aa0e4 100644 --- a/README.md +++ b/README.md @@ -56,11 +56,11 @@ - [Value Object](https://github.com/HowProgrammingWorks/ValueObject) β€” нСизмСняСмый, ΡΠ°ΠΌΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π² Π΄ΠΎΠΌΠ΅Π½Π΅ Π±Π΅Π· ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выраТСния Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΈ согласованности Π»ΠΎΠ³ΠΈΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, сравнСния ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² типобСзопасной, явно Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅. - [Null Object](https://github.com/HowProgrammingWorks/ValueObject) β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ стандартный интСрфСйс, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Β«do-nothingΒ». ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для избСТания ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π½Π° null, упрощСния Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ обСспСчСния ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠΉ бСзопасности. ЯвляСтся Π·Π°ΠΌΠ΅Π½ΠΎΠΉ дСйствия "ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ", ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‰Π΅ΠΉ условныС конструкции ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· Π³Π²Π°Ρ€Π΄Ρ‹. - [Active Record](https://github.com/HowProgrammingWorks/ActiveRecord) β€” Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ запись Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для нСпосрСдствСнного выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ CRUD (созданиС, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅) ΠΈ спСцифичных запросов ΠΊ сСбС. - - Data access object (DAO) β€” абстракция, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ интСрфСйс для сохранСния ΠΈ извлСчСния Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², изолируя Π΄ΠΎΠΌΠ΅Π½Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. + - [Data access object (DAO)](https://github.com/HowProgrammingWorks/Repository) β€” абстракция, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ интСрфСйс для сохранСния ΠΈ извлСчСния Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², изолируя Π΄ΠΎΠΌΠ΅Π½Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. - Data transfer object (DTO) β€” Π°Π½Π΅ΠΌΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅) Π±Π΅Π· Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ повСдСния, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ структурированных Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ слоями, модулями, подсистСмами ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ. - Data Access Layer (DAL) β€” слой, Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ доступ ΠΊ мноТСству DAO ΠΈΠ»ΠΈ сырых источников Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ шаблон Facade. Часто Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ трансформации Π΄Π°Π½Π½Ρ‹Ρ…. - [Repository](https://github.com/HowProgrammingWorks/Repository) β€” Π΄ΠΎΠΌΠ΅Π½Π½ΠΎ-цСнтричная абстракция для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ сущности, Π° Π½Π΅ сырыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ DTO. - - Π‘ΠΌ. Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹: Template method, Actor, State, Memento + - Π‘ΠΌ. Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹: [Template method](https://github.com/HowProgrammingWorks/TemplateMethod), [Actor](https://github.com/HowProgrammingWorks/Actor), [State](https://github.com/HowProgrammingWorks/State), [Memento](https://github.com/HowProgrammingWorks/Memento) - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - πŸ“’ Вводная лСкция - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) From 63ad7704c383c32a0768f526f143f5e2f16284e2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 23 Sep 2025 04:30:39 -0400 Subject: [PATCH 21/26] Add links --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 77aa0e4..9478c1f 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ - [Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° (Abstract factory)](https://github.com/HowProgrammingWorks/AbstractFactory) β€” создаСт связанныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· сСмСйств, Π±Π΅Π· указания ΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. - [Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ (Builder)](https://github.com/HowProgrammingWorks/Builder) β€” пошаговая сборка слоТного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, часто с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡Π΅ΠΈΠ½ΠΈΠ½Π³Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Query Builder ΠΈΠ»ΠΈ Form Generator. - [Π€Π°Π±Ρ€ΠΈΠΊΠ° (Factory)](https://github.com/HowProgrammingWorks/Factory) β€” функция ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами: сборки ΠΏΠΎ частям ΠΈΠ· Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‡Π΅Ρ€Π΅Π· примСси, setPrototypeOf. - - Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Factory method) β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½ΡƒΡŽ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ для создания экзСмпляра, Π² JavaScript это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· if, switch ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΎΡ€ конструктора ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. + - [Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Factory method)](https://github.com/HowProgrammingWorks/FactoryMethod) β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½ΡƒΡŽ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ для создания экзСмпляра, Π² JavaScript это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· if, switch ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΎΡ€ конструктора ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. - [ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ (Prototype)](https://github.com/HowProgrammingWorks/PrototypePattern) β€” ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ экзСмпляра, для экономии рСсурсов Π½Π° созданиС (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с [ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌ наслСдованиСм](https://github.com/HowProgrammingWorks/Prototype), ΠΎΠ½ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ Flyweight). - [Flyweight](https://github.com/HowProgrammingWorks/Flyweight) β€” экономия выдСлСния памяти для Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· проброс доступа ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ (раздСляСмому) ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ инстанса. - [ΠžΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ° (Singleton)](https://github.com/HowProgrammingWorks/Singleton) β€” Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ доступ ΠΊ СдинствСнному экзСмпляру, часто ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Π°Π½Ρ‚ΠΈ-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ, ΠΏΡ€ΠΎΡ‰Π΅ всСго Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· кэш систСмы ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ESM/CJS. @@ -21,8 +21,8 @@ - 🀝 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ - [АдаптСр (Adapter)](https://github.com/HowProgrammingWorks/Adapter) β€” ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΡ€, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ нСсовмСстимый интСрфСйс Π² совмСстимый, позволяя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сторонний ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π±Π΅Π· измСнСния Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. - [ΠžΠ±Π΅Ρ€Ρ‚ΠΊΠ° (Wrapper)](https://github.com/HowProgrammingWorks/Wrapper) β€” ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° Π½Π°Π΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ с пробросом Π²Ρ‹Π·ΠΎΠ²Π° (Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ повСдСния, частный случай ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Adapter. - - Boxing β€” ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ для добавлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ интСрфСйсов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΡΡƒΠ·ΠΈΡ‚ΡŒ String Π΄ΠΎ AddressString. - - Decorator β€” динамичСски Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π΅Π· наслСдования, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис, ΠΏΠΎ сути добавляСт ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅. + - [Boxing](https://github.com/HowProgrammingWorks/ADT) β€” ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ для добавлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ интСрфСйсов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΡΡƒΠ·ΠΈΡ‚ΡŒ String Π΄ΠΎ AddressString. + - [Decorator](https://github.com/HowProgrammingWorks/Decorator) β€” динамичСски Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π΅Π· наслСдования, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис, ΠΏΠΎ сути добавляСт ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅. - [ΠŸΡ€ΠΎΠΊΡΠΈ (Proxy)](https://github.com/HowProgrammingWorks/Proxy) β€” ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, пСрСхватывая Π²Ρ‹Π·ΠΎΠ²Ρ‹, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для Π»Π΅Π½ΠΈΠ²ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ бСзопасности, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² GoF ΠΈΠ»ΠΈ встроСнным Π² JavaScript Proxy. - [ΠœΠΎΡΡ‚ (Bridge)](https://github.com/HowProgrammingWorks/Bridge) β€” Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΉ абстракций Π·Π° счСт ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ, позволяя ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ нСзависимо. - [ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ (Composite)](https://github.com/HowProgrammingWorks/Composite) β€” Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, DOM ΠΈΠ»ΠΈ файловая систСма. @@ -71,7 +71,7 @@ - ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (Controller) - [ΠΠ΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ (Indirection)](https://youtu.be/IGXdPOZ3Fyk) - [НизкоС Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ (Low coupling)](https://youtu.be/IGXdPOZ3Fyk) - - Высокая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ (High cohesion) + - [Высокая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ (High cohesion)](https://youtu.be/IGXdPOZ3Fyk) - ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (Polymorphism) - Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ (Protected variations) - [Чистая Π²Ρ‹Π΄ΡƒΠΌΠΊΠ° (Pure fabrication)](https://youtu.be/CV577a0RHBM) From 57e2ecbcfb5725dafa85e38381ae41e74d8b7c1f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 23 Sep 2025 05:10:31 -0400 Subject: [PATCH 22/26] GRASP videos --- README.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 9478c1f..5be96f0 100644 --- a/README.md +++ b/README.md @@ -62,18 +62,13 @@ - [Repository](https://github.com/HowProgrammingWorks/Repository) β€” Π΄ΠΎΠΌΠ΅Π½Π½ΠΎ-цСнтричная абстракция для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ сущности, Π° Π½Π΅ сырыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ DTO. - Π‘ΠΌ. Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹: [Template method](https://github.com/HowProgrammingWorks/TemplateMethod), [Actor](https://github.com/HowProgrammingWorks/Actor), [State](https://github.com/HowProgrammingWorks/State), [Memento](https://github.com/HowProgrammingWorks/Memento) - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - - πŸ“’ Вводная лСкция - - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) - - Π§Π°ΡΡ‚ΡŒ 1 - [GRASP для Node.js ΠΈ Javascript](https://youtu.be/vm8p4jIQwp4) - - Π§Π°ΡΡ‚ΡŒ 2 - скоро + - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) + - [GRASP Part 1: Information expert, Creator, Low coupling, High cohesion](https://youtu.be/vm8p4jIQwp4) + - [GRASP Part 1: Protected variations, Indirection, Pure fabrication, Polymorphism, Controller](https://youtu.be/aJGB7TLwiig) - [Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ экспСрт (Information expert)](https://youtu.be/cCHL329_As0) - - Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ (Creator) - - ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (Controller) - [ΠΠ΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ (Indirection)](https://youtu.be/IGXdPOZ3Fyk) - [НизкоС Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ (Low coupling)](https://youtu.be/IGXdPOZ3Fyk) - [Высокая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ (High cohesion)](https://youtu.be/IGXdPOZ3Fyk) - - ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (Polymorphism) - - Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ (Protected variations) - [Чистая Π²Ρ‹Π΄ΡƒΠΌΠΊΠ° (Pure fabrication)](https://youtu.be/CV577a0RHBM) - [ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°](https://youtu.be/4AMVQ2-2DcM) - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) SOLID From 0358dcb58c661682682ff959f32d6f6f9028341a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 27 Oct 2025 17:33:49 -0400 Subject: [PATCH 23/26] GRASP definition --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5be96f0..c2f3c02 100644 --- a/README.md +++ b/README.md @@ -64,13 +64,22 @@ - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) GRASP - [ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ GRASP](https://youtu.be/ExauFjYV_lQ) - [GRASP Part 1: Information expert, Creator, Low coupling, High cohesion](https://youtu.be/vm8p4jIQwp4) - - [GRASP Part 1: Protected variations, Indirection, Pure fabrication, Polymorphism, Controller](https://youtu.be/aJGB7TLwiig) + - [GRASP Part 2: Protected variations, Indirection, Pure fabrication, Polymorphism, Controller](https://youtu.be/aJGB7TLwiig) - [Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ экспСрт (Information expert)](https://youtu.be/cCHL329_As0) - [ΠΠ΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ (Indirection)](https://youtu.be/IGXdPOZ3Fyk) - [НизкоС Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ (Low coupling)](https://youtu.be/IGXdPOZ3Fyk) - [Высокая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ (High cohesion)](https://youtu.be/IGXdPOZ3Fyk) - [Чистая Π²Ρ‹Π΄ΡƒΠΌΠΊΠ° (Pure fabrication)](https://youtu.be/CV577a0RHBM) - [ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°](https://youtu.be/4AMVQ2-2DcM) + - Information Expert - распрСдСляйтС ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎ Π·Π°Π΄Π°Ρ‡Π°ΠΌ Π½Π° Ρ‚Π΅ абстракции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ для этого Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Бвязано: encapsulation, cohesion, coupling, information hiding, SOLID: SRP, SoC. + - Creator - Если ΠΎΠ΄Π½Π° абстракция ΠΏΠΈΡˆΠ΅Ρ‚, Ρ‡ΠΈΡ‚Π°Π΅Ρ‚, Π°Π³Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚, сильно Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½Π° с Π΄ΠΎΡ€ΡƒΠ³ΠΎΠΉ, Ρ‚ΠΎ ΠΎΠ½Π° ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π΅Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Бвязфно: Information Expert, GoF Creational patterns. + - Controller - содСрТит use-case сцСнарии для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… I/O запросов, ΠΎΡ‚ UI, API ΠΈΠ»ΠΈ ΡˆΠΈΠ½Ρ‹ собыий ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ абстракциям. Бвязано: GoF Command, Facade, Layers, Pure Fabrication. + - Low Coupling - каТдая абстракция минимально зависит ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, содСрТит ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ "Π·Π½Π°Π½ΠΈΠΉ" (ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ). Π”Π°Π΅Ρ‚ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ, простоту тСстирования ΠΈ сопровоТдСния. Бвязано: High Cohesion, Controller, Indirection, DIP, DI, IoC, Revealing constructor, Facade, Mediator, Observer, Strategy, State, Bridge, Adapter, Proxy. + - High Cohesion - всС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ элСмСнты абстракции тСсно связаны ΠΎΠ±Ρ‰Π΅ΠΉ Ρ†Π΅Π»ΡŒΡŽ ΠΈ "Π·Π½Π°ΡŽΡ‚" ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, совмСстно Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π’Π°ΠΊΠΈΠ΅ абстракции Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ сопровоТдаСтся. Бвязано: Low Coupling, Information Expert, Composite, Facade, Adapter. Высокая ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ модуля ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ модулями Π΄Π°ΡŽΡ‚ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ систСмы. + - Polymorphism - ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ динамичСской диспСтчСризации абстракции Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΡŽΡ‚ дСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ с ΠΎΠ±Ρ‰ΠΈΠΌ интСрфСйсом вмСсто явного вСтвлСния ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ. Бвязано: GoF Strategy, Adapter, Creator, Command, State, Bridge, Template Method, Visitor, Factory Method, Proxy. + - Pure Fabrication - искуствСнныС абстракции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ относятся ΠΊ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области, Π° ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ структурныС, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΈ тСхничСскиС Π½ΡƒΠΆΠ΄Ρ‹. Бвязано: SRP, ISP, GoF: Facade, Adapter, Observer, Command, Mediator, Repository, Service. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: EventEmitter, Stream, Connection, Promise, Error. + - Indirection - посрСдник для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ слабого зацСплСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Бвязано: GoF Mediator, Facade, Observer, Service Layer, API Gateway, Message Broker, Event Bus. + - Protected Variations - Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ абстракции ΠΎΡ‚ измСнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ вынСсСния взаимодСйствия Π² фиксированный интСрфСйс, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ абстракциями. Бвязано: Interface, Contract programing, Generics, OCP, DIP, DI, IoC, GoF: Strategy, Bridge, Abstract Factory, Factory Method, Adapter, Proxy, Facade. - 🧩 Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹) SOLID - πŸ“’ Вводная лСкция: [SOLID for Node.js and Javascript](https://youtu.be/B2guSV8EMn0) - [SOLID вопросы Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ](https://youtu.be/-9OM6-6pZw8) From 4229a24547368e2701d26acc9eaf917c77e36ef5 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 27 Oct 2025 17:56:54 -0400 Subject: [PATCH 24/26] SOLID definitions Added explanations for SOLID principles in Russian. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index c2f3c02..d1dc893 100644 --- a/README.md +++ b/README.md @@ -88,3 +88,8 @@ - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Лисков (Liskov substitution principle)](https://youtu.be/RbhYxygxroc) - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйса (Interface segregation principle)](https://github.com/HowProgrammingWorks/InterfaceSegregation) - [ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимостСй (Dependency inversion principle)](https://github.com/HowProgrammingWorks/DependencyInversion) + - Single responsibility principle - Ρƒ класса Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° для измСнСния. Β«ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΠΊΡ‚ΠΎΡ€Π°.Β» + - Open-closed principle - абстракции (классы, Ρ‚ΠΈΠΏΡ‹ ΠΈ Ρ‚.Π΄.) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. + - Liskov substitution principle - Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΡ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π΅ зная ΠΎΠ± этом. + - Interface segregation principle - ΠΌΠ½ΠΎΠ³ΠΎ интСрфСйсов, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ интСрфСйс ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. + - Dependency inversion principle - Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π° Абстракциях. НСт зависимости Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅. From c4d0c027c859fcedce09ba9a507ac5ef8c052b46 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 3 Nov 2025 16:34:11 +0200 Subject: [PATCH 25/26] Add Service Locator --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d1dc893..0c86be2 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ - [Actor](https://github.com/HowProgrammingWorks/Actor) β€” Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, взаимодСйствуя асинхронно Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сообщСний Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡƒΡ‚Ρ‘ΠΌ изоляции состояния Π°ΠΊΡ‚ΠΎΡ€Π°. - [Reactor (event-loop)](https://github.com/HowProgrammingWorks/Reactor) β€” ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ события синхронно, помСщая ΠΈΡ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ направляя зарСгистрированным ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ²Π΅Ρ€Ρ… синхронного Ρ†ΠΈΠΊΠ»Π° событий. Часто примСняСтся Π² систСмах с интСнсивным I/O, упрощая ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ событиями. - [Proactor](https://github.com/HowProgrammingWorks/Proactor) β€” Π¦ΠΈΠΊΠ» событий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ внСшним Π°Π³Π΅Π½Ρ‚ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, I/O подсистСмой), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (возвращая Π΄Π°Π½Π½Ρ‹Π΅ Π² callback). + - [Service Locator](https://github.com/HowProgrammingWorks/ServiceLocator) - Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΈΠΉ рСєстр сСрвісів, який дозволяє Π½Π°ΠΌ рСєструвати Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΡƒΠ²Π°Ρ‚ΠΈ абстракції ΠΌΡ–ΠΆ модулями (Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для впровадТСння залСТностСй, Π² js Ρ†Π΅ ΠΌΠΎΠΆΠ½Π° Ρ€Π΅Π°Π»Ρ–Π·ΡƒΠ²Π°Ρ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· систСму ΠΌΠΎΠ΄ΡƒΠ»Ρ–Π² ESM Π°Π±ΠΎ CJS). - πŸ—ƒοΈ Π¨Π°Π±Π»ΠΎΠ½Ρ‹ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ - [Transaction Script](https://github.com/HowProgrammingWorks/TransactionScript) β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ шаблон, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ каТдая бизнСс-опСрация рСализуСтся ΠΊΠ°ΠΊ функция (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ»ΠΈ скрипт). - Pattern SAGA β€” шаблон распрСдСлённой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слоТный бизнСс-процСсс разбиваСтся Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°Π»Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ дСйствиС Π½Π° случай сбоя. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распрСдСлённых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. From 0842382631a0c71ffce8af8b5ac4d831916cd6f3 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 3 Nov 2025 16:35:18 +0200 Subject: [PATCH 26/26] Translate SL to RU --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0c86be2..5012772 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ - [Actor](https://github.com/HowProgrammingWorks/Actor) β€” Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, взаимодСйствуя асинхронно Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сообщСний Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡƒΡ‚Ρ‘ΠΌ изоляции состояния Π°ΠΊΡ‚ΠΎΡ€Π°. - [Reactor (event-loop)](https://github.com/HowProgrammingWorks/Reactor) β€” ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ события синхронно, помСщая ΠΈΡ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ направляя зарСгистрированным ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ²Π΅Ρ€Ρ… синхронного Ρ†ΠΈΠΊΠ»Π° событий. Часто примСняСтся Π² систСмах с интСнсивным I/O, упрощая ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ событиями. - [Proactor](https://github.com/HowProgrammingWorks/Proactor) β€” Π¦ΠΈΠΊΠ» событий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ внСшним Π°Π³Π΅Π½Ρ‚ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, I/O подсистСмой), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (возвращая Π΄Π°Π½Π½Ρ‹Π΅ Π² callback). - - [Service Locator](https://github.com/HowProgrammingWorks/ServiceLocator) - Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΈΠΉ рСєстр сСрвісів, який дозволяє Π½Π°ΠΌ рСєструвати Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΡƒΠ²Π°Ρ‚ΠΈ абстракції ΠΌΡ–ΠΆ модулями (Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для впровадТСння залСТностСй, Π² js Ρ†Π΅ ΠΌΠΎΠΆΠ½Π° Ρ€Π΅Π°Π»Ρ–Π·ΡƒΠ²Π°Ρ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· систСму ΠΌΠΎΠ΄ΡƒΠ»Ρ–Π² ESM Π°Π±ΠΎ CJS). + - [Service Locator](https://github.com/HowProgrammingWorks/ServiceLocator) - Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ рССстр сСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°ΠΌ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ абстракции ΠΌΠ΅ΠΆΠ΄Ρƒ модулями (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для внСдрСния зависимостСй, Π² js ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‡Π΅Ρ€Π΅Π· систСму ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ESM ΠΈΠ»ΠΈ CJS). - πŸ—ƒοΈ Π¨Π°Π±Π»ΠΎΠ½Ρ‹ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ - [Transaction Script](https://github.com/HowProgrammingWorks/TransactionScript) β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ шаблон, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ каТдая бизнСс-опСрация рСализуСтся ΠΊΠ°ΠΊ функция (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ»ΠΈ скрипт). - Pattern SAGA β€” шаблон распрСдСлённой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слоТный бизнСс-процСсс разбиваСтся Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°Π»Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ дСйствиС Π½Π° случай сбоя. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распрСдСлённых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.