2017-03-17 10 views

Odpowiedz

3

Nic nie zmienia się w przypadku klas ES6/TypeScript. Są po prostu składnikiem cukru dla funkcji konstruktora JavaScript.

Przypadki dobrego wykorzystania dla usług factory można określić na podstawie procesu eliminacji.

Od service usługi są korzystne dla jednostek OOP smaku:

class FooClass { 
    static $inject = [...]; 
    constructor(...) {} 
} 

app.service('foo', FooClass); 

I value usługi są odpowiednie dla pojedynczych jednostek, które nie są zbudowane z klas i nie wiążą DI:

app.value('bar', 'bar'); 
app.value('Baz', BazClass); 

factory usługi mogą być używane w pozostałych przypadkach. To znaczy. gdy usługa musi DI i wrócił wartość nie może być łatwo skonstruowany z klasą - funkcja, prymitywne, obiektu, który jest zwracany z wywołania funkcji:

app.factory('qux', ($q) => $q.all([...])); 
3

Mieliśmy ten sam problem dwa Lata temu. Decyzja polegała na pozostawaniu w systemie kątowym i budowaniu tylko usług kątowych. Ani kątowa fabryka, ani maszynopis statyczny. Powodem było to, że mogliśmy śledzić, jak usługa została stworzona i udostępniona. (przez twarde)

Aby odpowiedzieć na twoje pytanie, fabryka kątowa jest obiektem, który wciąż potrzebuje bazy wtryskowej na systemie kątowym. Dobrze, jeśli chcesz zachować ciasno kątowe.

Z drugiej strony maszynopis jest bardziej ogólny. Kiedy wywołujesz funkcję statyczną, jest to tylko funkcja. Możesz importować go nigdzie indziej, nie jako kątowy, a potem go użyć.

1

Coś o javascript wzór:

wspólny wzorzec do tworzenia obiektów w JavaScript to wzorzec modułu. Wzór obejmuje zwrócenie obiektu z funkcji, która będzie Twoim publicznym API.

Istnieje popularna odmiana dla wzorca modułu o nazwie moduł ujawniający moduł. Co się dzieje z wzorcem modułu odkrywczego, to rzeczy zaczynają się jawnie prywatne, a następnie podejmowane są wybory dotyczące tego, czy stają się publiczne.

Powiązane problemy