Obserwator – wzorzec w JavaScript

Wzorzec opisuje obiekt (nazywany Subject lub Observable), który informuje inne obiekty o zmianie swojego stanu, dzięki czemu subskrybenci mogą zareagować na wszelkie zmiany.

Wyobraźmy sobie, że mamy portal z ogłoszeniami o pracę:

function JobPortal() {
    this.observers = [];
    this.subscribe = function(observer) {
        this.observers.push(observer);
    }
    this.unsubscribe = function(observer) {
        var index = this.observers.findIndex(
        el => el === observer);
        this.observers.splice(index, 1);
    }
    this.addNewOffer = function(offer) {
        this.observers.forEach(
        el => el.notify(offer));
    }
}

Kod potencjalnego kandydata:

function Candidate(name){
    this.name = name;
    this.notify = function (offer){
        console.log(this.name+" ma ofertę:"+offer);
    }
}

Połączenie kandydatów z portalem:

let jobPortal = new JobPortal(); 

jobPortal.subscribe(new Candidate("Ola")); 
jobPortal.subscribe(new Candidate("Adam"));

let user3 = new Candidate("Ania");
jobPortal.subscribe(user3);
jobPortal.unsubscribe(user3);

jobPortal.addNewOffer("FrontEnd dev oferta");
// Ola ma ofertę: FrontEnd dev oferta
// Adam ma ofertę: FrontEnd dev oferta

KW

Scroll to Top