[J2SE] 談談Service的設計

看板java作者 (殺人貓™)時間12年前 (2013/07/19 13:44), 編輯推噓2(202)
留言4則, 4人參與, 最新討論串1/9 (看更多)
http://rayer.logdown.com/posts/32096-talk-about-service-design 因為文很長,加上裡面有無敵多的code 所以我直接貼我logdown連結 絕對不是要推銷自己blog喔(本來就沒啥人氣的 XD) Logdown能用Markdown真的是太對我胃口了,唯一的缺憾大概就是沒footnote 所以前兩天就決定慢慢把技術文章轉過來 這篇將會在一個月之後的某個技術討論會議拿出來聊,也請大家幫我看看 這技術上到底有什麼優缺點 可以直接執行的source code在整篇文章最下面 裡面包含了自己動手玩。 這篇ptt post我想聊點其他東西,跟這個有點關係,可以算是這個技術的起頭 我自己工程師生涯大概也有9年了,我算是比較堅持強型別以及型別安全的。 也許是因為我主攻的是C++,C++對這個的技術(Technique)是相當重視的, 而JavaScript則是另外一種極端,Obj-C早期也是完全沒型別安全概念 Java整體來講開發者的習慣是比較偏中庸,前面有人提到Spring,其實Spring 嚴格講起來也有很多型別問題,更不用說很多系統中充斥著父轉子子轉父 AService serv = (AService)getSystemService(SERVICEA_CONTEXT); 或者這種東西(壞習慣的人真的很多) if(a instanceof AService) .......; 由於我個人是比較堅持型別安全,編譯器能幫我們檢查的時候我絕對不會執行期檢查 在我還在寫C++的時候,也因為template的使用跟資深前輩迭起衝突 (template可以鎖定型別,而且能做出一些如Policy Based Design的設計) 在Java其實也常常會碰到自己寫的Generic卻發現別人根本看不懂的窘況 (老實講我自己私底下會認為,都職業級了,這種東西跟Design Pattern至少都要能看 懂吧?純Technique的東西不能拿看不懂當借口) 我以前也常常去塗改別人obj-c id傳來傳去的code,如果這個放在java的話,就是把 Object傳來傳去,然後再轉型 -- instanceof? 硬轉?whatever... 這種code我想在 看這個板有點年紀的人應該看到都會想罵。 @Override public Object startService(Object parameter); 這種code其實職業生涯碰過許多次,總會說阿parameter每個service都長得不一樣啊 (聽說有種做法叫做生成模式?沒考慮過用Factory or Builder?) 全面改寫很麻煩因為它已經是interface的一部分了啊 (聽說這interface就是嫌麻煩的人搞出來的飛機) 反正這種東西該怎麼轉型勢教育訓練該做的事情啊 (這個真的聽了很無言都不知道怎麼反駁的好 XD) 後來才慢慢體會到,所有事情都自己做好,別人不用轉型的話 整個code都會清爽很多。Framework層先做掉,讓對方用的方便,自然就會這樣用 這篇blog文章也請大家不吝指教一下,感謝 =P 我相信應該很多人也對這方法跟特性很陌生,順便分享一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.251.135

07/19 14:47, , 1F
我還是比較喜歡用factory,雖然硬梆梆又煩死了
07/19 14:47, 1F

07/19 15:33, , 2F
Google Guice
07/19 15:33, 2F

07/21 06:33, , 3F
受教了
07/21 06:33, 3F

07/22 08:39, , 4F
推~期待後續的文章
07/22 08:39, 4F
文章代碼(AID): #1HwD8b6b (java)
討論串 (同標題文章)
文章代碼(AID): #1HwD8b6b (java)