Podá objektu jeho závislosti zvonku namiesto toho, aby si ich zháňal sám.
class Zaznamnik { zapis(sprava) { throw new Error('abstraktná metóda'); }} class KonzolovyZaznamnik extends Zaznamnik { zapis(sprava) { console.log(sprava); }} class SuborovyZaznamnik extends Zaznamnik { zapis(sprava) { this.subor.pridaj(sprava); }} // Takto nie: závislosť vzniká vnútri a zvonku sa nedá vymeniť.class SluzbaZle { constructor() { this.zaznamnik = new KonzolovyZaznamnik(); }} // Takto áno: čo služba použije, to dostane zvonku.class Sluzba { constructor(zaznamnik) { this.zaznamnik = zaznamnik; } prijmi(objednavka) { this.zaznamnik.zapis('prijatá ' + objednavka.id); }} // Zostavovač je jediné miesto, kde sa volí konkrétna implementácia.const doKonzoly = new Sluzba(new KonzolovyZaznamnik());doKonzoly.prijmi(objednavka); const doSuboru = new Sluzba(new SuborovyZaznamnik());doSuboru.prijmi(objednavka); // ten istý kód služby, iný výstup