我在自由起訴辛格爾頓模式,我在想;什麼時候夠了,夠了?這些都是我現在的單身人士。我並沒有像所有人一樣使用它們。我過度使用Singleton模式嗎?
Database db = Database.getInstance(this); // wrapper for the library
Realm realm = Realm.getInstance(this); // library I use
AppUtils appUtils = AppUtils.getInstance(this); // app specific functions that manipulate database queries to produce targeted values
Utils utils = Utils.getInstance();
Generator gen = Generator.getInstance(this); // necessary for the library
我想也做這樣的事情
AppFragments fr = AppFragments.getInstance(this, AttributeCommonInEveryActivity>)
或者我應該接口,並做BlerpActivity extends BlourpActivity
最後,以清除可能發生的影響你的意見的任何偏差。我知道,似乎我只使用一種設計模式,但我不是。我在考慮設計和實用方面工作^ _^
如果'Database db'的確是「庫的包裝器」,那麼你不需要'Realm realm',因爲'db'應該包含'Realm'實例,並且如果有的話可以通過'db'獲取它除了'db'需要它。關於你的其他三個單身人士,不知道他們做了什麼,很難告訴你。儘管如此,爲什麼數據需要在全球範圍內成爲具體的具體原因。單身人士因爲「打字很難」不是一個好的理由。 :-) – CommonsWare
似乎你可以使用一個好的[DI](https://en.wikipedia.org/wiki/Dependency_injection)框架,例如[Guice](https://github.com/google/guice/wiki /動機)。這樣,通過簡單地[範圍](https://github.com/google/guice/wiki/Scopes)適當地創建對象,就可以完全避免手寫的JVM單例(一種反模式)。 –
@CommonsWare 您好,非常感謝您的反饋。領域是圖書館,而不是我自己的建築。這就是你與數據庫溝通的方式(叫Realm/lame)。 這是我無法避免的唯一單例。數據庫獲取上下文並創建一個新的RealmInstance來獲取常用結果。 你絕對正確的最後一句話。我儘量使它儘可能模塊化 – MayTheSchwartzBeWithYou