2009-11-12 171 views
4

我有一個名爲SingletonController1的單身人士類別。由Singleton包裝的單身人士或非單身人士

這個SingletonController1實例化了一堆其他的Singleton類。

SingletonController1{ 
Authenticator - Singleton; 
DBAccessor - Singleton; 
RiskAccessor - Singleton; 
} 

我的問題是,如果我返工一下這個設計:

SingletonController2{ 
    Authenticator -non-singleton; 
    DBAccessor -non-singleton; 
    RiskAccessor -non-singleton; 
    } 

只要SingletonController2是實例化這三個非singleton類的唯一類,這是不是可以在功能上與之前的設計相同?

乾杯

+1

我不清楚你爲什麼要做這個重新設計。如果你認爲這些子類最好是以單身人士的形式表現出來,你爲什麼要設計它們,好像它們不是? – Beska 2009-11-12 21:52:35

+1

謝謝,不想重新設計它。我只是想,當然最好把限制強加給頂層(Controller),而不是強加給每個子類(因爲Controller是實例化它們的唯一類)。 – CaptainHastings 2009-11-13 19:36:01

回答

5

功能將相同,但在第二種情況下靈活性要大得多,因爲非單例類可以在應用程序/系統中的其他位置重用。如果他們不需要單身,讓他們不是單身。

+1

謝謝,我的情緒正好。 – CaptainHastings 2009-11-13 19:33:37

1

是的。這兩種設計完成同樣的事情,考慮到除Singleton2之外沒有任何其他類實例化Authenticator,DBAccessor和RiskAccessor。

1

我認爲你是在正確的軌道上,但進一步推進。回到你的程序的根源,你只需要一個單身人士。之後還有一個合理的步驟。

+0

這是一個單一的應用程序的上下文嗎? – HDave 2010-07-07 02:52:38

0

最近,我一直在做的是使用依賴注入框架來創建對象。他們可以做的是用一行代碼來創建一個單獨的類,並配置該類的創建方式。這樣,如果你需要一個以上的對象,你只需刪除該行並改變架構以稍微調用它。我剛剛使用了一個與Unity 3D一起工作的框架,所以我不確定Unity 3D以外的框架是否支持這個框架,但我有一個很好的感覺。