metoda Fabryczna

podsumowanie

metoda Fabryczna tworzy nowe obiekty zgodnie z instrukcją klienta. Jednym ze sposobów tworzenia obiektów w JavaScript jest wywołanie funkcji konstruktora za pomocą nowego operatora. Zdarzają się jednak sytuacje, w których Klient nie wie lub nie powinien wiedzieć, który z kilku kandydatów chce utworzyć instancję. Metoda Fabryczna pozwala klientowi delegować tworzenie obiektów, zachowując jednocześnie kontrolę nad tym, który typ ma zostać utworzony.

głównym celem metody fabrycznej jest rozciągliwość. Metody fabryczne są często używane w aplikacjach, które zarządzają, utrzymują lub manipulują kolekcjami obiektów, które są różne, ale jednocześnie mają wiele wspólnych cech (tj. metod i właściwości). Przykładem może być zbiór dokumentów z mieszanką dokumentów Xml, dokumentów Pdf i dokumentów Rtf.

Diagram

Diagram metoda Fabryczna JavaScript wzór projektowy

uczestnicy

obiekty uczestniczące w tym wzorze To:

  • Creator — In sample code: Factory
    • obiekt 'factory’, który tworzy nowe produkty
    • implementuje 'factoryMethod’, który zwraca nowo utworzone produkty
  • AbstractProduct — nieużywany w JavaScript
    • deklaruje interfejs dla produktów
  • ConcreteProduct — w przykładowym kodzie: pracownicy
    • tworzony produkt
    • wszystkie produkty obsługują ten sam interfejs (właściwości i metody)

przykładowy kod w JavaScript

w tym przykładzie JavaScript obiekt factory tworzy cztery różne typy pracowników. Każdy typ pracownika ma inną stawkę godzinową. Metoda createEmployee jest rzeczywistą metodą fabryczną. Klient instruuje fabrykę, jaki typ pracownika ma utworzyć, przekazując argument type do metody Factory.

produkt Abstrakcyjny na diagramie nie jest zaimplementowany, ponieważ Javascript nie obsługuje klas abstrakcyjnych ani interfejsów. Musimy jednak upewnić się, że wszystkie typy pracowników mają ten sam interfejs (właściwości i metody).

tworzone są cztery różne typy pracowników; wszystkie są przechowywane w tej samej tablicy. Każdy pracownik jest proszony o podanie, czym jest i jaka jest jego stawka godzinowa.

funkcja log jest pomocnikiem, który zbiera i wyświetla wyniki.

function Factory() { this.createEmployee = function (type) { var employee; if (type === "fulltime") { employee = new FullTime(); } else if (type === "parttime") { employee = new PartTime(); } else if (type === "temporary") { employee = new Temporary(); } else if (type === "contractor") { employee = new Contractor(); } employee.type = type; employee.say = function () { log.add(this.type + ": rate " + this.hourly + "/hour"); } return employee; }}var FullTime = function () { this.hourly = "$12";};var PartTime = function () { this.hourly = "$11";};var Temporary = function () { this.hourly = "$10";};var Contractor = function () { this.hourly = "$15";};// log helpervar log = (function () { var log = ""; return { add: function (msg) { log += msg + "\n"; }, show: function () { alert(log); log = ""; } }})();function run() { var employees = ; var factory = new Factory(); employees.push(factory.createEmployee("fulltime")); employees.push(factory.createEmployee("parttime")); employees.push(factory.createEmployee("temporary")); employees.push(factory.createEmployee("contractor")); for (var i = 0, len = employees.length; i Run 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.