Angular service, 服務


 
早上開車上班, 發現車快沒油了, 因而拐進加油站. 有一輛出租車也在加油..
 
Angular service在一個應用裏是以單例形式存在的. 這個單例的實例是由service factory(service工廠)建立的.
 
  • 加油, 就比如是一個 Angular service; 
  • 不管是我加的油, 仍是出租車加的油, 都是從這個加油站同一個地下油罐取出來的一樣的汽油. 你們使用的都是同一個汽油實例(單例);
  • 個人車與出租車共享了加的汽油的屬性, 好比: 都是93#汽油, 摻水的比例, ...
所以, 在Angular裏, 以下狀況會考慮使用service:
  • 可重用的, 純業務邏輯的代碼, 與$scope無關的代碼能夠被寫成service. DRY.
  • 用service共享數據, 由於在應用中, 對service的依賴都是引用同一個service實例
  • ...
------
開頭寫到 service 是由 service factory(是一個函數) 所建立, service factory 就比如上圖的那2個油桶.
 
在Angular體系中, service factory 又是由 service provider(是構造函數) 所建立, service provider 就比如這個加油站.
設想若是加油站很大, 必須有一個指路牌, 標識出在哪兒加93#汽油. service provider 函數必須包含名爲   $get  的屬性, 它指向 service factory 函數. 就比如,   $get  這個路標指示咱們在哪兒找到93#加油點.
 
 
Angular 提供了5個建立service的方法, 由繁到簡, 或具備特殊功能
  • .provider(provider)
  • .constant(obj)
  • .value(obj)
  • .factory(fn)
  • .service(class)
主要相比較的爲 provider(), factory(), service() 3個函數.
用它們定義service時, 寫法各不相同.
最終實例化的方式也不一樣.
provider() 比如整個加油站, 可配置性強, 程序員能夠盡情發揮..
factory(), service() 次之, 哪裏須要哪裏搬, 定義簡單, 
 
----
 
var provider = function() {
 
  this.$get = function factory() {
    
  }
 
}
相關文章
相關標籤/搜索