Wzorzec projektowy Fabryka w JavaScript

Fabryki mają na celu tworzenie nowych instancji obiektów. Ich główną zaletą jest prostota ich użycia przez developera, nie musi znać nazw obiektów, które chce powołać do życia.

Wszelka logika związana z powstaniem oraz inicjalizacją instancji pozostaje w fabryce, co jest  dużą zaletą jeśli jest to złożony proces np zależny od specyficznej konfiguracji aplikacji.

Nie jest wymagane użycie konstruktora do powołania obiektu, zwykle udostępniany jest interfejs w postaci funkcji zwracających gotowe obiekty.

function AdminUser(email, password, rank){
    BasicUser.call(this, email, password);
    this.rank = "admin";
}
function BasicUser(email, password){
    this.email = email;
    this.password = password;
    this.rank = "user";
}


let UserFactory = {
    getUser: function(email) {
        return new BasicUser(email, "qwerty");
    },
    getAdmin(email, password) {
        return new AdminUser(email, password, "admin");
    }
}

Fabryka może zwracać różne obiekty zależnie od potrzeb.

let user1 = UserFactory.getUser("user1@example.com");
// {email: "user1@example.com", 
// password: "qwerty",  
// rank: "user"}

let admin = UserFactory.getAdmin("admin@example.com", "123");

KW

Scroll to Top