Posted on 2010-03-19 07:40
云自無心水自閑 閱讀(3025)
評論(0) 編輯 收藏 所屬分類:
Java 、
心得體會 、
Tapestry
出自伏爾泰的名句。在許多優秀的程序員的編程習慣中,尋找解決方案就如同是尋找女友一般,總是力求完美,如果一個解決方案不夠完美的話,那么寧可舍棄也不會降低標準而采用。但是這樣的結果很有可能會是一葉障目,不見森林。
舉個實際的例子來說,tapestry5的服務動態加載就是一個典型。
大家知道,在Tapestry中,頁面模板的動態加載一直是其的一個宣傳點。也就是說,頁面模板如果修改了,不需要重新啟動應用服務器,修改即時生效。但是,Tapestry卻一直沒有實現服務的動態加載,也就是說服務的類修改了,就必須重新啟動服務器。為什么呢,因為追求完美。
其實很久以前在Tapestry的作者的頭腦中,包括許多的用戶都想在Tapestry中加入服務動態加載的功能,但是最后作者卻放棄了。原因是因為,在Tapestry的架構中,服務比頁面要復雜的多,服務不是單獨存在的,他會被Inject到許多其他的服務,而這些服務又會被inject到其他的服務中,最后導致你很難界定哪些類需要被重新加載。
但是最近有一個人提出一個建議,為什么要實現完整的動態加載呢。其實只實現服務的實現類的動態加載就已經很好了。
確實,如果保持接口不變,只在接口具體實現修改的時候加載,確實大大簡化了問題,因為這樣變化范圍就被限定在單個類之內了。雖然這樣并不完美,因為如果改變了對外接口,比如,添加了一個新的方法,或者改變了方法的簽名,還是需要重新啟動服務器。可是這樣也已經在很大程度上提升了用戶的使用滿意度。
正如有句古語所說:退一步海闊天空。也在此提醒自己在以后的開發過程中,盡量拓展自己的思維,不要一下子鉆到牛角尖里。