Skip to content

Commit

Permalink
Add clarifications to Lab 05 assignment
Browse files Browse the repository at this point in the history
  • Loading branch information
100yo committed Nov 9, 2024
1 parent 9eaeca0 commit d3e44de
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion 05-generics/lab/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 на приложението, благодарение на асинхронната комуникация между компонентите му и се среща често там, където е важна обработката на събития в реално време, като игри, чат приложения или финансови системи.

Expand Down Expand Up @@ -211,6 +211,7 @@ public interface EventBus {
* @throws IllegalArgumentException if the event type is null
*/
<T extends Event<?>> Collection<Subscriber<?>> getSubscribersForEvent(Class<T> eventType);

}
```

Expand All @@ -220,6 +221,12 @@ public interface EventBus {

:point_right: За смислена реализация и локално тестване, ще трябва да си създадете имплементации на някои от описаните интерфейси, но имате свобода да прецените, с колко и какви класове.

:point_right: За да разберем какво представлява класът [`Class<T>`](https://docs.oracle.com/en/java/javase/23/docs/api/java.base/java/lang/Class.html), добре е да знаем, че ако `MyClass` е име на клас, то `MyClass.class` е референция към обекта, който представлява този клас, и тази референция е от тип `Class<MyClass>`. Да речем, ако класът е `String`, може да напишем

```java
Class<String> stringClassRef = String.class;
```

### Пакети

Спазвайте имената на пакетите на всички по-горе описани типове, тъй като в противен случай, решението ви няма да може да бъде автоматично тествано.
Expand Down

0 comments on commit d3e44de

Please sign in to comment.