Browse Source

chore: updates README.md

e22m4u 2 years ago
parent
commit
20b18ad450
1 changed files with 84 additions and 0 deletions
  1. 84 0
      README.md

+ 84 - 0
README.md

@@ -9,6 +9,90 @@
 npm install @e22m4u/service
 npm install @e22m4u/service
 ```
 ```
 
 
+## ServiceContainer
+
+Метод `get` контейнера `ServiceContainer` инкапсулирует
+создание экземпляра полученного конструктора и сохраняет
+его для последующих обращений по принципу "одиночки".
+
+Пример:
+
+```js
+import {ServiceContainer} from '@e22m4u/service';
+
+// создание контейнера
+const container = new ServiceContainer();
+
+// для примера используется конструктор Date
+const myDate1 = container.get(Date);
+const myDate2 = container.get(Date);
+
+console.log(myDate1); // Tue Sep 12 2023 19:50:16
+console.log(myDate2); // Tue Sep 12 2023 19:50:16
+console.log(myDate1 === myDate2); // true
+```
+
+Метод `get` может принимать аргументы конструктора. При этом,
+если контейнер уже имеет сохраненный экземпляр данного
+конструктора, то он будет пересоздан с новыми аргументами.
+
+Пример:
+
+```js
+const myDate1 = container.get(Date, '2025-01-01');
+const myDate2 = container.get(Date);
+const myDate3 = container.get(Date, '2025-05-05');
+console.log(myDate1); // Wed Jan 01 2025 03:00:00
+console.log(myDate2); // Wed Jan 01 2025 03:00:00
+console.log(myDate3); // Sun May 05 2030 03:00:00
+```
+
+## Service
+
+Сервисом может являться совершенно любой класс. Однако,
+если это наследник встроенного класса `Service`, то такой
+сервис позволяет инкапсулировать создание самого
+сервис-контейнера и его хранение.
+
+Пример:
+
+```js
+// создадим сервис сообщений Messenger
+class Messenger {
+  // и метод выводящий полученное сообщение
+  send(message) {
+    console.log(`[Messenger] ${message}`);
+  }
+}
+
+// создадим сервис приветствия Greeter
+// наследуя поведение класса Service
+class Greeter extends Service {
+  // и приветствующий метод hello
+  hello(name) {
+    // в котором получим сервис Messenger,
+    // используя унаследованный метод getService
+    const messenger = this.getService(Messenger);
+    // и отправим наше приветствие методом send
+    messenger.send(`Hello ${name}!`);
+  }
+}
+
+// создадим экземпляр сервиса Greeter
+const greeter = new Greeter();
+
+greeter.hello('Peter');
+// [Messenger] Hello Peter!
+
+greeter.hello('Jesse');
+// [Messenger] Hello Jesse!
+```
+
+В примере выше мы не заботились о создании экземпляра
+сервис-контейнера и его передачу между сервисами, так как
+эта логика инкапсулирована в классе `Service` и его методе
+`getService`
+
 ## Тесты
 ## Тесты
 
 
 ```bash
 ```bash