DEV Community

Cover image for Observer Pattern
Sukma Rizki
Sukma Rizki

Posted on

Observer Pattern

The Observer Pattern is a behavioral design pattern that defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. This pattern is particularly useful for implementing distributed event-handling systems.

Purpose

  • Establish a one-to-Many dependency between objects.

  • Automatically notify and update dependents when the state of the subjet changes

Structure

  1. Subject : Maintains a list of observers and provides methods to attach and detach observers.
  2. Observer : Defines an updating interfaces for objects that should be notified of changes in the subject
  3. Concrete Subject: Implements the subject interface and maintains state tha interest the observers.
  4. Concurete Observer : Implements the observer interface and keeps a reference to a concrete subject.

Implementation in Dart or Flutter Framework

Let create an Example:

Image description

Image description

Explanation

  • Observer Interface: NewsSubscriber defines an interface for updating objects.
  • Subject: NewsPublisher maintains a list of subscribers and notifies them of any changes.
  • Concrete Observer: ConcreteNewsSubscriber implements the observer interface and updates its state when notified.
  • Client: The main function subscribes observers to the publisher and triggers notifications.

Use Case

  • Event Handling: When a change in one object requires others to be notified and updated.
  • Data Binding: In GUI components where changes in the model should reflect in the view.
  • Logging: When multiple logging objects need to be notified of an event.

Benefits

  • Loose Coupling: Observers are loosely coupled to the subject, allowing for easier maintenance and scalability.
  • Dynamic Relationships: Observers can be added or removed at runtime.

Drawbacks

Memory Leaks: If observers are not properly removed, it can lead to memory leaks.
Unpredictable Behavior: Notifications can cause unpredictable behavior if not managed carefully.
The Observer Pattern is quite powerful for creating systems where changes in one part need to be reflected in others. Let me know if you need more details or want to explore another design pattern!

Stay Connected with Me!
Hey there! If you’ve enjoyed my content, let’s stay connected across multiple platforms. Follow me to stay updated with the latest insights, tips, and discussions.

Top comments (0)