我打算將spymemcached合併到我擁有的java servlet中,並試圖找出處理MemcachedClient的最佳方法。我應該創建一個在整個servlet中使用的單個靜態單例,還是每次需要使用客戶端時,都要實例化一個新的?spymemcached在一個java servlet中 - 我應該使用單身嗎?
1
A
回答
0
Singleton
模式幾乎是不合適的。建議使用Dependency Injection
或Service Locator
。
如果您使用的是低級別的Java servlet,而不是像Spring這樣的控制反轉的MVC框架,您會發現DI會增加大量的實施開銷。在這種情況下,服務定位器可能更合適。服務定位器在消費者和資源之間添加一個間接層。例如:
MyResource resource = MyResourceLocator.resource();
這是怎麼樣比單身更好?這不是很多如上所示更好 - 我們仍然不期望地耦合到MyResourceLocator
類和它的靜態方法。我們可以改善這一點:
MyResource resource = MyLocator.newInstance().resource();
這裏,MyLocator
可以使用靜態工廠方法,newInstance
一個抽象類。然後可以通過不同的實現覆蓋resource()
。例如,工廠方法間接方法允許您提供不同類型的定位器,具體取決於您是在生產還是在測試中。 MyLocator
甚至可能堅持Service Provider Interface (SPI) standard,允許第三方無縫插入並提供資源。
0
Spymemcached使用單個IO線程,但行爲像多線程客戶端。以一個線程爲例,您可以每秒處理高達50k的運算。如果你想創建一個線程池,那麼你將不得不在你的用戶應用程序中執行它。
相關問題
- 1. 我應該使用單身嗎?
- 2. 我應該使用單身改造嗎?
- 3. 我應該在servlet的request.getParameter中使用哪一個?
- 4. 我應該能夠添加一個類到單身人士嗎?
- 5. 我應該使用單身進行硬件管理嗎?
- 6. 這個對象應該是單身嗎?
- 7. java servlet使用另一個java servlet的功能嗎?
- 8. 我應該在Algolia中使用一個或多個索引嗎?
- 9. 我應該在一個畫布中使用多個圖像嗎?
- 10. 我應該在ASP.NET 5中使用Windows身份驗證嗎?
- 11. servlet是單身人士嗎?
- 12. 我應該使用Android菜單嗎?
- 13. 我應該將一個單身人士作爲一個伊娃嗎?
- 14. 我應該避免在golang中打包單身人士嗎?
- 15. 我應該使用JAI嗎?
- 16. 我應該使用Hadoop嗎?
- 17. 我應該關閉servlet輸出流嗎?
- 18. 在Java中,我應該在字符串中使用單引號(')(雙引號)嗎?
- 19. 在我的servlet中調用一個servlet中的java類
- 20. 爲什麼,在什麼情況下,我們應該在spring mvc中使用多個servlet而不是單個servlet?
- 21. 我應該如何在DDD中使用單身人士?
- 22. 我應該使用沒有servlet的代碼嗎?
- 23. 我應該在android中使用getMeasuredState()嗎?
- 24. 我應該在RecyclerView中使用CursorLoader嗎?
- 25. 我應該在Matlab中使用arrayfun嗎?
- 26. 我應該在Flex4中使用Sprite嗎?
- 27. 我應該在Perl中使用autobox嗎?
- 28. 我應該在IntentService中使用WakeLock嗎?
- 29. 我應該使用fieldset嗎?
- 30. 我應該使用InnoDB嗎?