@startuml top to bottom direction abstract Subject { -list<Observer> $observers +attach(Observer $observer): void +detach(Observer $observer): void +notify(): void } note left of Subject::notify foreach ($this->observers as $observer) { $observer->update($this) } end note interface Observer { +update(Subject $changedSubject): void +equals(mixed $other): bool } class ConcreteSubject extends Subject { -$state +getState() +setState($state) } note left of ConcreteSubject::getState return $this->state; end note note left of ConcreteSubject::setState $this->state = $state; $this->notify(); end note class ConcreteObserver implements Observer { -$state -ConcreteSubject $subject +update(Subject $changedSubject): void +equals(mixed $other): bool } note right of ConcreteObserver::update $this->state = $this->subject->getState(); end note Subject "1" o-right-> "*" Observer ConcreteObserver "1" o-left-> "1" ConcreteSubject @enduml
Decode URL
Submit
amiga
aws-orange
black-knight
bluegray
blueprint
cerulean-outline
cerulean
crt-amber
crt-green
cyborg-outline
cyborg
hacker
lightgray
mars
materia-outline
materia
metal
mimeograph
minty
plain
reddress-darkblue
reddress-darkgreen
reddress-darkorange
reddress-darkred
reddress-lightblue
reddress-lightgreen
reddress-lightorange
reddress-lightred
sandstone
silver
sketchy-outline
sketchy
spacelab
spacelab-white
superhero-outline
superhero
toy
united
vibrant
🎉 Discover the future PlantUML Web Editor! 🚀
PNG
SVG
ASCII Art