Reactive

Promise
Also known as CompletableFuture Intent A Promise represents a proxy for a value not necessarily known when the promise is created. It allows you to associate dependent promises to an asynchronous action’s eventual success value or failure reason. Promises are a way to write async code that still appears as though it is executing in a synchronous way. Explanation The Promise object is used for asynchronous computations. A Promise represents an operation that hasn’t completed yet, but is expected in the future.
Reactor
Intent The Reactor design pattern handles service requests that are delivered concurrently to an application by one or more clients. The application can register specific handlers for processing which are called by reactor on specific events. Dispatching of event handlers is performed by an initiation dispatcher, which manages the registered event handlers. Demultiplexing of service requests is performed by a synchronous event demultiplexer. Class diagram Applicability Use Reactor pattern when
Observer
Also known as Dependents, Publish-Subscribe Intent Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. Explanation Real-world example In a land far away live the races of hobbits and orcs. Both of them are mostly outdoors so they closely follow the weather changes. One could say that they are constantly observing the weather. In plain words Register as an observer to receive state changes in the object.
Poison Pill
Intent Poison Pill is known predefined data item that allows to provide graceful shutdown for separate distributed consumption process. Explanation Real world example Let’s think about a message queue with one producer and one consumer. The producer keeps pushing new messages in the queue and the consumer keeps reading them. Finally when it’s time to gracefully shut down the producer sends the poison pill message. In plain words Poison Pill is a known message structure that ends the message exchange.
Event Aggregator
Name Event Aggregator Intent A system with lots of objects can lead to complexities when a client wants to subscribe to events. The client has to find and register for each object individually, if each object has multiple events then each event requires a separate subscription. An Event Aggregator acts as a single source of events for many objects. It registers for all the events of the many objects allowing clients to register with just the aggregator.