自己關於框架的一些思考

       最近一個月左右的時間,在學習Struts2這個框架,然後從不明白什麼是框架到現在就想說一點自己學習的感受。

       從最開始說起吧,從學習java以來,到了J2EE這個領域,聽到最多的SSH這個名詞,當時確實是不明白這時什麼東西,只知道這些都是“框架”,但是框架是什麼呢?開始是一個很模糊的概念,框架是什麼?解決了什麼問題?有什麼作用,它的好處是什麼?每一個疑問我都急切的想知道答案,其實是直到今天中午才真正的感覺概念有點清晰了。

GoF(設計模式) 寫道
       框架規定了你的應用的體系結構。它定義了整體結構,類和對象的分割,各部分的主要責任,類和對象怎麼協作,以及控制流程。框架預定義了這些設計參數,以便於應用設計者或實現者能集中精力於應用本身的特定細節。框架記錄了其應用領域的共同的設計決策。因而框架更強調設計複用,儘管框架常包括具體的立即可用的子類。
       這個層次的複用導致了應用和它所基於的軟件之間的控制反轉(inversion of control)。當你使用工具箱(或傳統的子程序庫)時,你需要寫應用軟件的主體並且調用你想複用的代碼。而當你使用框架時,你應該複用應用的主體,寫主體調用的代碼。你不得不以特定的名字和調用約定來寫操作地實現,但這會減少你需要做出的設計決策。
忘了在哪看到的了 寫道
      框架軟件設計的目的是將一個領域中不變的東西先定義好,比如整體結構和一些主要職責(如數據庫操作 事務跟蹤 安全等),剩餘的就是變化的東西,針對這個領域中具體應用產生的具體不同的變化需求,而這些變化東西就是J2EE程序員所要做的。

    後來看downpour大哥的系列文章裏面有一段話我也是印象深刻

downpour 寫道
     框架是爲了解決一個又一個在Web開發中所遇到的問題而誕生的。不同的框架,都是爲了解決不同的問題,但是對於程序員而言,他們只是jar包而已。框架的優缺點的評論,也完全取決於其對問題解決程度和解決方式的優雅性的評論。所以,千萬不要爲了學習框架而學習框架,而是要爲了解決問題而學習框架,這纔是一個程序員的正確學習之道。

    結合Struts2的學習,然後我的總結如下,可能有些地方理解的也不對。

     1.首先,framework不同於工具類,工具類是被動的,我們作爲主體,去調用相應的工具類來實現某些功能,而框架作爲一個主體,它的作用就是調用我們的類。這一點在我引用的第一段話中有所體現。

     2.框架預先定義了一些不變的東西,我們可以理解爲它只是搭建了一種結構,當你在開發時,需要去適應它的這種結構,就象建築開發商剛改的房子,沒有門窗和裝修,這只是一個大的架構,當你要去完善它的時候,你需要遵循它的某種規範。比如,你要給新房子裝一個門,你必須要按照它的標準去造一個門或是去買一個門。

     3.IoC和DI同樣很有意思,幾乎框架都會有這個特性,比如在Struts2中,針對於某個Action,對於具體的數據模型,你不需要創建他們的實例,只要你按照某種方式按某種約定來進行編程,框架本身就會幫你完成一些基本的工作,比如接受客戶端的請求參數,並放到相應的對象中去。

     最後說說框架解決了什麼問題以及使用它們的好處。首先就想downpour說的,框架是爲了解決某些問題而產生的,他們本身適合於解決某一類問題,對於Struts2來說它是MVC2的實現,主要是對VC的實現。使用它們最大的好處可能就是加速開發和易於後期維護吧。

 

發佈了17 篇原創文章 · 獲贊 7 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章