最近一個月左右的時間,在學習Struts2這個框架,然後從不明白什麼是框架到現在就想說一點自己學習的感受。
從最開始說起吧,從學習java以來,到了J2EE這個領域,聽到最多的SSH這個名詞,當時確實是不明白這時什麼東西,只知道這些都是“框架”,但是框架是什麼呢?開始是一個很模糊的概念,框架是什麼?解決了什麼問題?有什麼作用,它的好處是什麼?每一個疑問我都急切的想知道答案,其實是直到今天中午才真正的感覺概念有點清晰了。
這個層次的複用導致了應用和它所基於的軟件之間的控制反轉(inversion of control)。當你使用工具箱(或傳統的子程序庫)時,你需要寫應用軟件的主體並且調用你想複用的代碼。而當你使用框架時,你應該複用應用的主體,寫主體調用的代碼。你不得不以特定的名字和調用約定來寫操作地實現,但這會減少你需要做出的設計決策。
後來看downpour大哥的系列文章裏面有一段話我也是印象深刻
結合Struts2的學習,然後我的總結如下,可能有些地方理解的也不對。
1.首先,framework不同於工具類,工具類是被動的,我們作爲主體,去調用相應的工具類來實現某些功能,而框架作爲一個主體,它的作用就是調用我們的類。這一點在我引用的第一段話中有所體現。
2.框架預先定義了一些不變的東西,我們可以理解爲它只是搭建了一種結構,當你在開發時,需要去適應它的這種結構,就象建築開發商剛改的房子,沒有門窗和裝修,這只是一個大的架構,當你要去完善它的時候,你需要遵循它的某種規範。比如,你要給新房子裝一個門,你必須要按照它的標準去造一個門或是去買一個門。
3.IoC和DI同樣很有意思,幾乎框架都會有這個特性,比如在Struts2中,針對於某個Action,對於具體的數據模型,你不需要創建他們的實例,只要你按照某種方式按某種約定來進行編程,框架本身就會幫你完成一些基本的工作,比如接受客戶端的請求參數,並放到相應的對象中去。
最後說說框架解決了什麼問題以及使用它們的好處。首先就想downpour說的,框架是爲了解決某些問題而產生的,他們本身適合於解決某一類問題,對於Struts2來說它是MVC2的實現,主要是對VC的實現。使用它們最大的好處可能就是加速開發和易於後期維護吧。