2016-02-26 106 views
0

我想使Factory能夠返回一個對象,此對象可用於與緩存系統進行交互。最佳實踐創建新對象或返回相同對象

什麼方式更好?每次返回一個新對象或每次只使用同一個對象。

Factory getInstance(Type type){ 
    switch(type){ 
    case 1 : return A(); 
    case 2 : return B(); 

    } 
} 

或返回同一對象

class Factory {  
    private static A a = new A();; 
    private static B b = new B(); 


Factory getInstance(Type type){ 
     switch(type){ 
     case 1 : a; 
     case 2 : b; 
     } 
    } 
} 

A或B的重調諧對象具有將要訪問使用單個靜態實例Hazelcast服務器非靜態方法。

回答

0

如果您確定A和B都不帶狀態並且真正保存線程,那麼重新使用同一個實例可能是一個不錯的優化。繼工廠模式的一個很好的例子是你最好的選擇:

http://www.tutorialspoint.com/design_pattern/factory_pattern.htm

常見的做法是,而不是創建一個單獨的工廠。如果你搜索它,你會很容易看到這個例子。這是一個體面的一個:

http://www.java2s.com/Tutorial/Java/0460__Design-Pattern/SingletonFactory.htm

0

總的原則是KISS

所以,

  1. 不要重複使用相同的對象,除非它真的需要(例如,你的表現真的,你已經做了分析結果的基礎上,這個決定)。做可重用的對象,你需要自己管理他們的實例(使用對象池等)。
  2. 嘗試創建你的對象不可變,除非你有明顯的原因。使對象變爲可變你給代碼增加了額外的複雜性。因此,你增加了添加錯誤的可能性。

結論:我寧願使用沒有Factory變量的第一個解決方案。至少作爲最初的工廠實施。

0

不要重新發明輪子,使用DI庫。有很多圖書館可以做這種事情,春天是最知名的。他們可以爲您生成工廠和管理豆類。

它可能會滿足這樣的需求,但我會很驚訝你沒有需要在所有的應用程序。