Re: [J2SE] 談談Service的設計

看板java作者 (殺人貓™)時間12年前 (2013/07/19 15:43), 編輯推噓3(3010)
留言13則, 5人參與, 最新討論串3/9 (看更多)
※ 引述《abola921 (墳都買不起了還想買房)》之銘言: : ※ 引述《Killercat (殺人貓™)》之銘言: : : http://rayer.logdown.com/posts/32096-talk-about-service-design : 我真的很認真的把全文看完了 : 我沒理解錯的話應該是使用 getService 去取得一個已存在的 service物件 : (也就是Singleton的方式) : 用static的方式去實賤,這點並不意外,方便又快速 謝謝把這篇文章看完的版友,因為這篇真的有夠長+非常多的code =P 不過在這裡我想強調的東西並不是怎麼存取一個Singleton。 而是一個老問題:型別安全。 重點在於這種方法取出來的物件不用轉型(也不能轉型) 而且能被Eclipse的auto complete正確的指向正確的型別 (請見下面動手玩的code 很有趣喔 XD) Spring...其實我個人是相當反Spring的,肥大,不好維護 我也知道@Autowire真的很方便,不過Spring...恩,見仁見智 XD : 不過老問題: thread safe, 最後也會走上老解法: ThreadLocal : 但你也提到了Spring,那為什麼不直接宣告成Spring Service : 預設也是Singleton的方式存在,而且不會有thread safe的問題 : 就只是差在,要多做一個強制轉型 : 我會比較建議直接宣告成Spring Service,在你有include spring的前提下 謝謝你的看法。不過,Service設計上這邊提到的相當少,我也有打算再寫一篇 關於Service其他方面的做法。比方說Thread Safe。事實上,我們目前專案的 Service有頗嚴格的field控管,我也覺得這不是很好的做法,我有打算用C++的pImpl 方式來解決這個問題(編譯防火牆),徹底做到把所有的field圈起來. http://tw.myblog.yahoo.com/jw!II2iRHiVEQJ0_2kIG.YEQcfMM2M-/article?mid=10&prev=11&next=9 不過這篇的確就是為了消滅強轉而存在的,只要是「使用者工程師」的強轉 就一定會有出錯的機會。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.251.135

07/19 16:52, , 1F
(Test2)((Object)getService(Test.class)) (大誤!!)
07/19 16:52, 1F

07/19 16:55, , 2F
這種一心尋死的engineer神仙難救 XD
07/19 16:55, 2F

07/19 17:34, , 3F
直接複製spring beanfactory來用就好拉
07/19 17:34, 3F

07/19 17:37, , 4F
我討厭Spring有個很重要的原因就是要額外寫xml OTZ...
07/19 17:37, 4F

07/19 17:38, , 5F
xml == 容易typo == 執行其花資源檢查
07/19 17:38, 5F

07/19 17:42, , 6F
阿~複製spring的架構,然後只複製自己要的(code)就好..(迷)
07/19 17:42, 6F

07/19 17:43, , 7F
BeanFactory本身就是靠xml來peek class內部的啊 XD
07/19 17:43, 7F

07/19 17:44, , 8F
那是實作拉~實作可以隨便做~重要可是架構跟樣式拉
07/19 17:44, 8F

07/19 17:45, , 9F
spring設定檔不一定要用xml
07/19 17:45, 9F

07/19 18:06, , 10F
我回去翻翻好了 不過他看起來是外部讀入class架構說...
07/19 18:06, 10F

07/19 20:47, , 11F
要是我不用spring,會在put Service時 put Service Proxy~XD
07/19 20:47, 11F

07/19 21:09, , 12F
Spring 3.2+ or Google Guice
07/19 21:09, 12F

07/20 02:30, , 13F
謝謝樓上 不過dependency injection目前不太想考慮 ^^;
07/20 02:30, 13F
文章代碼(AID): #1HwEulji (java)
討論串 (同標題文章)
文章代碼(AID): #1HwEulji (java)