面向?qū)ο蠛兔嫦蜻^程對比

概念


面向?qū)ο蠛兔嫦蜻^程是去解決問題的兩種不同思想

什么是面向過程?

面向過程 可以理解為一種算法,你是怎么一步一步去實(shí)現(xiàn)或者完成你的目的。
可以舉個例子

什么是面向?qū)ο螅?/h3>

面向?qū)ο?是面向過程的進(jìn)化(物競天擇,適者生存),以前(面向過程)解決問題要一步一步來,中間需求或者影響條件改變之后,對于過程中各個影響點(diǎn)都要去調(diào)整,麻煩。隨著時間推移,進(jìn)化出面向?qū)ο蟮母拍?,抽象出某種統(tǒng)一的行為轉(zhuǎn)化為對象

例如:吃飯
過程怎么處理?
買菜 洗菜 做飯 吃飯 洗碗

抽象出來怎么辦?
廚師:買菜 洗菜 做飯
我:吃飯
廚師:洗碗

將吃飯抽象出兩個對象:廚師 我
廚師有兩個功能
我有一個功能

這時候我想吃烤豬怎么辦?
改變廚師做飯的方法

對比

共同點(diǎn)
不同點(diǎn)

面向過程
優(yōu)缺點(diǎn)對比維度:性能 可維護(hù)性
優(yōu)點(diǎn):性能比面向?qū)ο蟾撸驗(yàn)轭愓{(diào)用時需要實(shí)例化,開銷比較大,比較消耗資源;比如單片機(jī)、嵌入式開發(fā)、 Linux/Unix等一般采用面向過程開發(fā),性能是最重要的因素。
缺點(diǎn):沒有面向?qū)ο笠拙S護(hù)、易復(fù)用、易擴(kuò)展

面向?qū)ο螅?br> 優(yōu)點(diǎn):易維護(hù)、易復(fù)用、易擴(kuò)展,由于面向?qū)ο笥蟹庋b、繼承、多態(tài)性的特性,可以設(shè)計(jì)出低耦合的系統(tǒng),使系統(tǒng) 更加靈活、更加易于維護(hù)
缺點(diǎn):性能比面向過程低

面向過程性能一定比面向?qū)ο蟾邌幔?/h3>

事物無絕對

面向過程也需要分配內(nèi)存,計(jì)算內(nèi)存偏移量,Java性能差的主要原因并不是因?yàn)樗敲嫦驅(qū)ο笳Z言,而是Java是半編譯語言,最終的執(zhí)行代碼并不是可以直接被CPU執(zhí)行的二進(jìn)制機(jī)械碼。

而面向過程語言大多都是直接編譯成機(jī)械碼在電腦上執(zhí)行,并且其它一些面向過程的腳本語言性能也并不一定比Java好。

隨著硬件的不斷升級,很多性能方面的因素可以忽略

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容