函數式編程和物件導向編程的區別和優劣_物件導向編程

來源:互聯網
上載者:User

是什麼
在敘述區別和優劣之前,簡單介紹一下兩者。
函數式編程,顧名思義,這種編程是以函數思維做為核心,在這種思維的角度去思考問題。這種編程最重要的基礎是λ演算,接受函數當作輸入和輸出。
物件導向編程,這種編程是把問題看作由對象的屬性與對象所進行的行為組成。基於對象的概念,以類作為對象的模板,把類和繼承作為構造機制,以對象為中心,來思考並解決問題。

優點
函數式編程:支援閉包和高階函數,閉包是一種可以起函數的作用並可以如對象般操作的對象;而高階函數是可以以另一個函數作為輸入值來進行編程。支援惰性計算,這就可以在求值需要運算式的值得時候進行計算,而不是固定在變數時計算。還有就是可以用遞迴作為控制流程程。函數式編程所編程出來的代碼相對而言少很多,而且更加簡潔明了。
物件導向編程:物件導向有三個主要特徵,分別是封裝性、繼承性和多態性。類的說明展現了封裝性,類作為對象的模板,含有私人資料和公有資料,封裝效能使資料更加安全依賴的就是類的特性,使得使用者只能看到對象的外在特性,不能看到對象的內在屬性,使用者只能訪問公有資料不能直接存取到私人資料。類的派生功能展現了繼承性,繼承性是子類共用父類的機制,但是由於封裝性,繼承性也只限於公有資料的繼承(還有保護資料的繼承),子類在繼承的同時還可以進行派生。而多態性是指對象根據接收的資訊作出的行為的多態,不同對象接收同一資訊會形成多種行為。

缺點
函數式編程:所有的資料都是不可以改變的,嚴重佔據運行資源,導致運行速度也不夠快。
物件導向編程:為了編寫可以重用的代碼導致許多無用代碼的產生,並且許多人為了物件導向而物件導向導致代碼給後期維護帶來很多麻煩。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.