Class: Design Pattern — Observer

The Observer (publish-subscribe) design pattern with interface + concrete implementations.

class-design-pattern-observer.mmd
classDiagram
  class Subject {
    <<interface>>
    +attach(Observer) void
    +detach(Observer) void
    +notify() void
  }
  class Observer {
    <<interface>>
    +update() void
  }
  class EventEmitter {
    -List~Observer~ observers
    +attach(Observer) void
    +detach(Observer) void
    +notify() void
  }
  class Logger {
    +update() void
  }
  class Alerter {
    +update() void
  }
  Subject <|.. EventEmitter
  Observer <|.. Logger
  Observer <|.. Alerter
  EventEmitter --> Observer
Output
Class diagram, Zombie Mermaid <<interface>> Subject + attach(Observer): void + detach(Observer): void + notify(): void <<interface>> Observer + update(): void EventEmitter - List<Observer> observers + attach(Observer): void + detach(Observer): void + notify(): void Logger + update(): void Alerter + update(): void

More Class diagram examples