我花了幾個小時閱讀服務和工廠之間的差異,在這裏,角度文檔和其他地方,但我仍然不真正瞭解它。AngularJS:一些幫助瞭解服務/工廠
我知道有關於這裏涉及到這個問題已經無數帖子,但是我只是想確保我的理解正確,因爲我現在不是失去了一些東西或者是沒有理由的區別......從什麼我瞭解服務和工廠完全一樣,它們在功能上是相同的,唯一的區別在於體系結構。
如果我們忽略角了一會兒,在香草JS重建這個我在想這是正確的是它們如何工作:
//factory design
var factoryDesign = function(){
var privateFoobar = 'foobar',
reverse = function(){
return privateFoobar
.split('')
.reverse()
.join('');
}
return {
foobar: privateFoobar,
raboof: reverse()
}
};
//Service design
var serviceDesign = function(){
this.foobar = 'foobar';
this.raboof = this.foobar
.split('')
.reverse()
.join('');
}
var myGlobalServiceInstance = new serviceDesign(),
myGlobalFactoryInstance = new factoryDesign();
console.log('service', myGlobalServiceInstance.foobar, myGlobalServiceInstance.raboof);
console.log('factory',myGlobalFactoryInstance.foobar,myGlobalFactoryInstance.raboof);
這兩種情況下會返回但同樣的事情,工廠主要依賴於返回的私有對象以及服務範圍的方法和對象。
如果是這種情況......這一點到底是什麼?是否有任何理由區分工廠......我的服務理解它可以讓你改變的值,如:
myGlobalServiceInstance.foobar = 'newFoobar';
但什麼是使用工廠的好處是什麼?如果可能,請提供香草JS任何例子
工廠是一個單體 - 意味着一個工廠的功能只被角度調用一次,然後你總是得到它返回的同一個對象。 我不知道你的意思是由香草js語法 - 角是香草JS。但要趕上你的代碼,它會更像: 'var myGlobalServiceInstance = new serviceDesign(), myGlobalFactoryInstance = factoryDesign();' – Charminbear 2014-11-03 17:10:01
我不會稱之爲「卡住」,因爲它有時甚至是非常有用的。但是,是的。 ;) – Charminbear 2014-11-03 20:24:02