There are sometimes cases where some objects are interested in the state change of another object and want to perform some specific action when this happens. A common example could be whenever you click a button in an app; some other objects subscribe to the click event and perform some actions. The observer design pattern helps us to achieve this.
The purpose of the observer design pattern is to have an object (called subject) that automatically notifies all of its observers of any state change by calling one of their methods.
The observer design pattern is employed in most GUI toolkits. It is also part of the MVC architectural pattern where the view is an observer. Java even comes with the Observable class and the Observer interface.