Dekorator – wzorzec projektowy w JavaScript

Dekorator jest jednym z popularniejszych wzorców projektowych, pozwala na dynamiczną zmianę zachowania aplikacji, rozszerza jej możliwości dekorując obiekty nowymi właściwościami.

Javascript to dynamiczny język, więc z łatwością możemy rozszerzać właściwości obiektów co czasem jest łatwiejsze niż pisanie wielu konstruktorów dla każdego potencjalnego przypadku. Zobaczmy przykład:

function User(name, addr) {
    this.name = name;
    this.addr = addr;
}
// dekorowanie instancji user
function decorateUserToEmployee(empl, data) {
    empl.company = (data.company || "Default Ltd");
    empl.salary = (data.salary || 5000);
    empl.tasks = [];
    empl.addTask = function(task) { 
            this.tasks.push(task);
    }
    return empl;
}

Przykład wykorzystania:

let user = new User("Adam", "Krk");
//dekorowanie użytkownika nowymi funkcjonalnościami
let employee=decorateUserToEmployee(user,{});
console.log(employee.name); // Adam
console.log(employee.company); // Default LTD
employee.addTask("zadanie 1");

KW

Scroll to Top