Description An object maintains a list of dependent objects (Observers) and notifies them directly when needed. Usefulness Allows updating dependencies at run time. Removes the need for external orchestration, pushing logic inside the object.