From d3e44de9252e781b53852d0664099132c0fd032c Mon Sep 17 00:00:00 2001 From: 100yo Date: Sat, 9 Nov 2024 17:54:17 +0200 Subject: [PATCH] Add clarifications to Lab 05 assignment --- 05-generics/lab/README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/05-generics/lab/README.md b/05-generics/lab/README.md index 8ae0d79a..1d8b6bd9 100644 --- a/05-generics/lab/README.md +++ b/05-generics/lab/README.md @@ -2,7 +2,7 @@ Нека упражним знанията си за Java Generics като същевременно се запознаем с някои важни концепции и архитектурни design patterns в съвременната софтуерна разработка като [Event Driven Architecture (EDA)](https://en.wikipedia.org/wiki/Event-driven_architecture). -*Event Bus* (или *Event Broker*) е архитектурен design pattern, използван в софтуерните системи за управление на комуникацията между различните компоненти на дадено приложение. Той позволява на тези компоненти да публикуват *събития* и да се *абонират* да получават (да бъдат уведомявани за) тези събития, без да има нужда да знаят един за друг и да имат директна връзка помежду си. +*Event Bus* (или *Event Broker*) е архитектурен design pattern, използван в софтуерните системи за управление на комуникацията между различните компоненти на дадено приложение. Той позволява на тези компоненти да публикуват *събития* и да се *абонират* да получават (да бъдат уведомявани за) тези събития, без да има нужда да знаят един за друг и да имат директна връзка помежду си. По същество, може да разглеждаме Event Bus като по-сложна и по-гъвкава реализация на [Observer Design Pattern-a](https://refactoring.guru/design-patterns/observer), подходяща за по-големи и по-сложни системи. Този шаблон се използва широко в съвременната софтуерна разработка, защото подобрява модулна архитектура на приложението и намалява взаимозависимостта между отделните му части, повишава производителността и *responsiveness*-a на приложението, благодарение на асинхронната комуникация между компонентите му и се среща често там, където е важна обработката на събития в реално време, като игри, чат приложения или финансови системи. @@ -211,6 +211,7 @@ public interface EventBus { * @throws IllegalArgumentException if the event type is null */ > Collection> getSubscribersForEvent(Class eventType); + } ``` @@ -220,6 +221,12 @@ public interface EventBus { :point_right: За смислена реализация и локално тестване, ще трябва да си създадете имплементации на някои от описаните интерфейси, но имате свобода да прецените, с колко и какви класове. +:point_right: За да разберем какво представлява класът [`Class`](https://docs.oracle.com/en/java/javase/23/docs/api/java.base/java/lang/Class.html), добре е да знаем, че ако `MyClass` е име на клас, то `MyClass.class` е референция към обекта, който представлява този клас, и тази референция е от тип `Class`. Да речем, ако класът е `String`, може да напишем + +```java +Class stringClassRef = String.class; +``` + ### Пакети Спазвайте имената на пакетите на всички по-горе описани типове, тъй като в противен случай, решението ви няма да може да бъде автоматично тествано.