2017-03-17 14 views

Trả lời

3

Không có thay đổi nào với các lớp ES6/TypeScript. Chúng chỉ là cú pháp cú pháp cho các hàm dựng hàm JavaScript.

Các trường hợp sử dụng tốt cho các dịch vụ factory có thể được xác định bằng quy trình loại bỏ.

Kể từ service dịch vụ là một lợi thế cho các đơn vị OOP-hương vị:

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

app.service('foo', FooClass); 

value dịch vụ là một lợi thế cho các đơn vị singleton không được xây dựng từ các lớp học và không liên quan đến DI:

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

factory dịch vụ có thể được sử dụng cho các trường hợp còn lại. I E. khi một dịch vụ cần DI và giá trị trả về không thể dễ dàng xây dựng từ một lớp học - một chức năng, một nguyên thủy, một đối tượng mà được trả về từ gọi hàm:

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

Chúng tôi đã có cùng một vấn đề hai năm trước. Quyết định ở lại với hệ thống góc cạnh và chỉ xây dựng các dịch vụ góc cạnh. Không có nhà máy góc hoặc kiểu chữ tĩnh. Lý do là chúng tôi có thể theo dõi cách dịch vụ đã được tạo và chia sẻ. (bởi khó)

Để trả lời câu hỏi của bạn, nhà máy góc là một đối tượng vẫn cần tiêm trên cơ sở góc. Nó là tốt nếu bạn muốn giữ chặt chẽ với góc cạnh.

Mặt khác, kiểu chữ tổng quát hơn. Khi bạn gọi một hàm tĩnh, nó chỉ là một hàm. Giống như bạn có thể nhập nó ở bất kỳ nơi nào khác không phải góc cạnh, và sau đó sử dụng nó.

1

Something về javascript mẫu:

Một mẫu chung cho việc tạo các đối tượng trong JavaScript là mẫu mô hình. Mô hình liên quan đến việc trả về một đối tượng từ hàm sẽ là API công khai của bạn.

Có một biến thể phổ biến đối với mẫu mô-đun được gọi là mẫu mô-đun tiết lộ. Điều gì xảy ra với mô hình mô-đun tiết lộ là mọi thứ bắt đầu một cách rõ ràng riêng tư, và sau đó lựa chọn được thực hiện về việc liệu chúng có trở thành công khai hay không.

Các vấn đề liên quan