Skip to content

Instantly share code, notes, and snippets.

@sjb9774
Created May 7, 2023 00:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sjb9774/93f92f3fb3206997ee94da39b8e67e1f to your computer and use it in GitHub Desktop.
Save sjb9774/93f92f3fb3206997ee94da39b8e67e1f to your computer and use it in GitHub Desktop.
Very simple observer pattern example
const createObserverPattern = () => {
let observers = [];
let register = (observer) => {
observers.push(observer);
}
let deregister = (observer) => {
observers = observers.filter((registeredObserver) => !Object.is(observer, registeredObserver))
}
let notify = (payload) => {
observers.forEach((observer) => observer.visit(payload))
}
return {register, notify, deregister}
}
const myObserver = {
visit: console.log
}
const {register, notify, deregister} = createObserverPattern()
register(myObserver);
notify({"message": "observed"})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment