Hi,你好,很高興看到并回答。
樓主能想到“框架是如何產生的”這個問題,說明樓主是在了解或使用了框架以后,經過了深層次的思考,希望獲得“事物的本質”。樓主這種“求知”的想法和心態,著實讓人欽佩。
本人從事開發多年,下面結合我的理解談一些想法。
首先,思考一下什么是框架。
日常生活中“框架”一詞經常被用到,例如建房子,要先搭框架;寫作文要列提綱,就是梳理框架。從上面例子可以得出,框架可理解為結構。
軟件中的框架如何理解呢?軟件框架即是軟件的體系結構。框架中包括了一些預先定義好的接口、類和對象,這些類與對象幫助程序員完成了一些基礎或通用的操作,例如事務處理、數據訪問等。因此,使用框架進行開發能夠提高開發效率和代碼質量。
其次,框架是如何產生的呢?
框架產生的目標是幫助開發人員解決一些通用的問題,提供通用問題的解決方案,讓程序員將主要精力放在業務開發上。這些解決方案是經過驗證的,可以在實際中應用的。
那么可以思考一下:框架中包含的這些通用問題的解決方法,又是如何得來的呢?答案就是:實踐。
框架從實踐中來,是對實踐經驗的總結。例如JavaEE中Struts框架的產生,則是在JSP/Servlet開發中為實現代碼職責分離而總結出的MVC模式的實現。
框架是一些共性問題解決方案的集合。框架是高度抽象的、可復用代碼的集合。
框架的產生是一個持續累積的過程,是一個持續改進的過程。
框架要實現“通用性”,在設計上必須是可擴展的、靈活的。因此,框架的設計過程是一個“重構”的過程。
從上面內容可以看出,框架是將(多個)項目中“典型代碼”抽取出來,然后繼續抽象和重構,最終形成的“經過實踐驗證的、可復用和高擴展的、解決通用問題的解決方案(代碼)的集合”。
第三,框架是怎么開發的呢?
從第二點可以看出,框架來源于實際項目,但又高于項目。所以,框架都是與具體的項目開發語言是一致的。例如,開發C#項目,使用的框架就是C#語言編寫的;開發Java項目,使用的框架就是Java語言編寫的。同類型語言編寫的框架,能夠更方便的應用到項目中。
最后,關于框架還應該知道的。
框架并不是萬能的,雖然說框架幫助程序員解決了一部分通用問題,但框架不能幫助我們實現項目功能,具體的項目業務開發還需要程序員自己完成。
框架的存在并不是為了解決軟件復雜度這一難題的。對于軟件復雜度的問題,經典的詞就是“沒有銀彈”,即沒有一種方法/方案可以從根本上解決復雜度問題。
我是一名Java全棧開發工程師、系統架構師,從業15年。曾帶領小團隊完成多個數百萬級項目。我正在寫一些關于互聯網行業及開發技術方面的文章。關注我,你一定會有所收獲。
如果有項目開發、行業及求職方面的問題,都可以在評論區留言或私信我。