JS中面向對象和麪向過程的區別

前言

要搞懂面向對象和麪向過程的區別,我們首先要了解什麼是面向對象。什麼是面向過程。

面向對象

面向對象的方法主要是把事物給對象化,包括其屬性和行爲。面向對象編程更貼近實際生活的思想。總體來說面向對象的底層還是面向過程,面向過程抽象成類,然後封裝,方便使用就是面向對象(萬物皆對象)。
在這裏插入圖片描述

面向過程

面向過程是一種以過程爲中心的編程思想。這些都是以什麼正在發生爲主要目標進行編程,不同於面向對象的是誰在受影響。與面向對象明顯的不同就是封裝、繼承、類。簡寫爲POP
在這裏插入圖片描述
之前在那篇博客上看到這個比喻,覺得特別恰當,挺容易讓人理解的,現在分享一下:

面向過程與面向對象的優缺點

很多資料上全都是一羣很難理解的理論知識,整的小編頭都大了,後來發現了一個比較好的文章,寫的真是太棒了,通俗易懂,想要不明白都難!

用面向過程的方法寫出來的程序是一份蛋炒飯,而用面向對象寫出來的程序是一份蓋澆飯。所謂蓋澆飯,北京叫蓋飯,東北叫燴飯,廣東叫碟頭飯,就是在一碗白米飯上面澆上一份蓋菜,你喜歡什麼菜,你就澆上什麼菜。我覺得這個比喻還是比較貼切的。

蛋炒飯製作的細節,我不太清楚,因爲我沒當過廚師,也不會做飯,但最後的一道工序肯定是把米飯和雞蛋混在一起炒勻。蓋澆飯呢,則是把米飯和蓋菜分別做好,你如果要一份紅燒肉蓋飯呢,就給你澆一份紅燒肉;如果要一份青椒土豆蓋澆飯,就給澆一份青椒土豆絲。

蛋炒飯的好處就是入味均勻,喫起來香。如果恰巧你不愛喫雞蛋,只愛喫青菜的話,那麼唯一的辦法就是全部倒掉,重新做一份青菜炒飯了。蓋澆飯就沒這麼多麻煩,你只需要把上面的蓋菜撥掉,更換一份蓋菜就可以了。蓋澆飯的缺點是入味不均,可能沒有蛋炒飯那麼香。

到底是蛋炒飯好還是蓋澆飯好呢?其實這類問題都很難回答,非要比個上下高低的話,就必須設定一個場景,否則只能說是各有所長。如果大家都不是美食家,沒那麼多講究,那麼從飯館角度來講的話,做蓋澆飯顯然比蛋炒飯更有優勢,他可以組合出來任意多的組合,而且不會浪費。

蓋澆飯的好處就是"菜"“飯"分離,從而提高了製作蓋澆飯的靈活性。飯不滿意就換飯,菜不滿意換菜。用軟件工程的專業術語就是**"可維護性**"比較好,“飯” 和"菜"的耦合度比較低。蛋炒飯將"蛋”“飯"攪和在一起,想換"蛋”"飯"中任何一種都很困難,耦合度很高,以至於"可維護性"比較差。軟件工程追求的目標之一就是可維護性,可維護性主要表現在3個方面:可理解性、可測試性和可修改性加粗樣式。面向對象的好處之一就是顯著的改善了軟件系統的可維護性。

總結

面向過程

優點:性能比面向對象高,因爲類調用時需要實例化,開銷比較大,比較消耗資源;比如單片機、嵌入式開發、 Linux/Unix等一般採用面向過程開發,性能是最重要的因素。
缺點:沒有面向對象易維護、易複用、易擴展

面向對象

優點:易維護、易複用、易擴展,由於面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統 更加靈活、更加易於維護
缺點:性能比面向過程低

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章