概念
面向?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好。
隨著硬件的不斷升級,很多性能方面的因素可以忽略