作者popcorny (畢業了..@@")
看板java
標題Re: [問題] Java Intropection的代價是否很貴?
時間Thu Jan 23 09:10:33 2014
※ 引述《dream1124 (全新開始)》之銘言:
: 會問這個問題,是因為好像曾經聽過這類說法
: 再加上最近看過 apache BeanUtils 的原始碼以後,
: 發覺原來就算只是物件的屬性蓋來蓋去也可以這麼複雜....
: 既是查找,然後定義再比對,最後還要快取
: 密密麻麻程式碼讓我不知如何下手... 其實我想解決的問題不複雜啊~ Orz
: 現在很流行讓屬性的 setter 有回傳值,然後型態設定為物件自己,
: 接著理所當然在設定完屬性後回傳自己,方便使用者連續呼叫 setter 設定屬性。
: 只是公司多年長期維護下來的案子已經很舊了
: 裡面依賴的 struts1 , apache BeanUtils 2.1, 都不覺得這種 setter 是合理的,
: 讓我想把物件的 setter 回傳自己的構想很難實行....
: 因此有自行實現 BeanUtils 工具的想法
: 只是看到 BeanUtils 的原碼令我有些卻步,
: 想請問有什麼方法可以解決像這樣的需求呢?
: 不管是開發新工具還是改舊的工具,請問大家會怎麼做呢?
還是要用javabean標準的setter/getter吧...
fluent interface不是標準javabean..
不建議修改你原專案這邊的code
如果你想用fluent interface
我建議包成builder pattern (這就很常見用fluent interface)
假設你有一個Car的javabean..
中間有些Wheel啊..Handler啊..什麼的要產生
我會用
Car car = new CarBuilder()
.setMaxSpeed()
.createWheels(xxx)
.createHandler(xxx)
.build();
但是Car, Wheel, Handler裡面都還是會用javabean的方式來做setter/getter
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.163.46.230
推 dream1124:好方法! 謝謝你! 01/23 22:30
→ qrtt1:不就是上一篇 wiki 寫的方法嗎?可見原 po 沒看參考資料... 01/24 00:48
→ dream1124:不好意思, 沒有仔細看 wiki 參考資料 01/24 00:53