云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

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



          主站蜘蛛池模板: 松阳县| 丁青县| 平和县| 武山县| 吉水县| 五大连池市| 额尔古纳市| 天气| 蒙阴县| 汽车| 金寨县| 曲麻莱县| 平南县| 皋兰县| 右玉县| 仙桃市| 板桥市| 安泽县| 余干县| 泸西县| 民丰县| 西宁市| 明星| 晋宁县| 石渠县| 乐业县| 乌拉特后旗| 黄石市| 离岛区| 莎车县| 缙云县| 巴林右旗| 兴海县| 固镇县| 郴州市| 兖州市| 班戈县| 工布江达县| 榆中县| 沙田区| 阿拉善盟|