框架到底是個什麼東西?

上個月剛從某培訓機構畢業,便開始找工作之路,當時很多面試官問我你經常用的php框架有哪些?對框架有什麼了解?當時就蒙了。。到現在依然不知道框架是幹什麼的,是一些寫好的東西的集成?求詳細解答,感激不盡


所有房子都有一個骨架,但是我們建房子的時候都要重新建立一遍骨架,然後再填磚,那麼如果有現成的骨架了,只填磚是不是很快?我們一套完整的應用程序就好比一座房子,我們每個程序的具體業務可能不同,但是有大部分基礎性的東西是相同的,比如文件上傳,資料庫查詢,這些是99.9%的程序都會有的,那麼框架就是把這些東西已經做好了,你拿來直接用就好了,你只需要寫你的具體業務部分,免去了很多基礎性的工作,加快開發速度,這就是框架。


框架是一個很抽象的概念,抽象的東西往往需要自己去體會,而體會到它的前提是你需要有項目經驗,而且不是一帆風順的項目經驗,而是你完成了了一個版本後,各種改各種加功能,各種加需求,你的代碼中狀態越來越多,判斷越來越多,邏輯越來越多,你似乎都無從下手,但是你思考之後有了一個感覺「誒,如果代碼寫成這樣,好像就好很多」,你甚至開始在腦子裡模擬代碼的樣子,如果有新的功能需求可以多麼方便的添加上。顯然,到這一步,你學會了思考,知道怎麼寫更方便更好維護。

這是一個解耦合的過程。

耦合解得多了,你相當富有經驗,下次來的新項目,你能輕鬆的預知很多情況寫出非常方便維護的代碼,在這樣的情況下仍然會遇到很多問題,不過都能有解決的辦法。因為你學會了抓住問題的根因和重點,快速的拆分業務邏輯。

幹了很多年,你見過各種各樣的需求和項目,都已經麻木了。你想如果每次都重新寫代碼都太傻逼了,於是你想搞出一個框架,預先就搭建很多邏輯來滿足可能出現的功能,搞完了你心滿意足,以後做項目就直接在這上面搞就信了,取數據一句話!爽


1.框架是某種編程模式的支架,是一個未完工的半成品.需要你賦予他業務含義才能工作.例如MVC,WPF.同時在框架中會包含一系列的約定,配置和工具來幫助你二次開發。

2.框架和組件的區別:都是面向特定問題的封裝,組件是完整的,你只需要了解它的API,加入到你的解決方案,調用它就能工作。框架不是。

另外,框架的侵入性比較強。同種功能的第三方組件很容易替換,但框架不容易,因為你已經按照它的約定做了很多二次開發。


框架其實就是業務模型的通用實現


冷的夜,殘月如鉤,怪物正在山間咆哮,世界上有很多怪物,噴毒的,長著大鉗子的,等等, 而你呢,是一個充滿正義感的英雄,就叫奧特曼吧, 你的任務是消滅這些怪物,當然,你不能用你的肉身直接上啊, 你需要利用大自然界的元素,作為自己的工具去消滅怪物,比如鐵礦啊,木頭啊,銅礦啊等等, 這些就是一門編程語言,那麼框架是什麼呢?框架就是一個有著良好組織的工具箱,在這個箱子里有AK47,狙擊槍,衝鋒槍等等,帶著這些武器箱,你會發現消滅怪物簡單多了,當然你得學會如何使用這些武器, 你也會發現這些武器設計很巧妙也很難,也有可能發現這些武器的bug,如果你夠牛的話,你甚至可以開發屬於自己的工具箱,成為一個真正的奧特曼。


我也剛開始學習框架,感覺有點思路但還是有不清楚,加油


學會編程語言後,比如說php,你就可以開始編寫程序了。但是一百個人有一百種不同的寫法,而且在重複寫相同的功能。框架的出現就是為了提供一些常見的,重複使用的功能,使你不用重複再造輪子。另外在軟體架構上,也就是代碼的組織管理,框架也提供了比較優秀的實踐範例,有利於軟體的穩定性,擴展性,使其有利於團隊協作。

有了框架,你可以學習優秀的編程方式,可以快速開發,可以和其他程序員按照統一的標準來合作開發。但是框架為了照顧到廣泛的需求,一般會設計得大而全,所以性能會受影響,需要後期進行優化。


推薦閱讀:

業界主流的RPC框架有哪些?Dubbo與Hadoop RPC的區別?
想要開發自己的PHP框架需要那些知識儲備?
一名Infrastructure Engineer需要掌握哪些技術?
作為WEB前端開發,大家都知道那些方便的js擴展庫呢?
MVC到底是設計模式還是一種框架?

TAG:開發框架 | 框架 |