? ? ? ?三人行必有我?guī)?,人生是需要不斷學(xué)習(xí)的,在這里我們相遇就是緣分,希望各位可以看完這篇文章,也歡迎大家在下面留言討論,天冷了,也動(dòng)動(dòng)手指轉(zhuǎn)發(fā)收藏一下,謝謝大家!
面向過程
優(yōu)點(diǎn):性能比面向?qū)ο蟾?,因?yàn)轭愓{(diào)用時(shí)需要實(shí)例化,開銷比較大,比較消耗資源;比如單片機(jī)、嵌入式開發(fā)、Linux/Unix等一般采用面向過程開發(fā),性能是最重要的因素。
缺點(diǎn):沒有面向?qū)ο笠拙S護(hù)、易復(fù)用、易擴(kuò)展
面向?qū)ο?/p>
優(yōu)點(diǎn):易維護(hù)、易復(fù)用、易擴(kuò)展,由于面向?qū)ο笥蟹庋b、繼承、多態(tài)性的特性,可以設(shè)計(jì)出低耦合的系統(tǒng),使系統(tǒng)更加靈活、更加易于維護(hù)
缺點(diǎn):性能比面向過程低

業(yè)務(wù)邏輯比較簡(jiǎn)單的適合用面向過程,例如統(tǒng)計(jì)當(dāng)前在線用戶數(shù),一條SQL語句就可以搞定的沒有多大必要用面向?qū)ο?,也沒有必要用什么設(shè)計(jì)模式,那樣就是簡(jiǎn)單問題復(fù)雜化了。
業(yè)務(wù)邏輯比較復(fù)雜的適合用面向?qū)ο?,這樣當(dāng)需求有變化時(shí),維護(hù)起來會(huì)比較方便。
面向?qū)ο蟮木植渴敲嫦蜻^程的,比如某個(gè)類里面某個(gè)方法里面實(shí)際就是面向過程的,而面向過程會(huì)借用面向?qū)ο蟮囊恍﹥?yōu)點(diǎn)來進(jìn)行優(yōu)化。
網(wǎng)上發(fā)現(xiàn)了一篇文章,說了一下OP與OO的不同,并且打了一個(gè)比喻,通俗易懂。
有人這么形容OP和OO的不同:用面向過程的方法寫出來的程序是一份蛋炒飯,而用面向?qū)ο髮懗鰜淼某绦蚴且环萆w澆飯。所謂蓋澆飯,北京叫蓋飯,東北叫燴飯,廣東叫碟頭飯,就是在一碗白米飯上面澆上一份蓋菜,你喜歡什么菜,你就澆上什么菜。我覺得這個(gè)比喻還是比較貼切的。
蛋炒飯制作的細(xì)節(jié),我不太清楚,因?yàn)槲覜]當(dāng)過廚師,也不會(huì)做飯,但最后的一道工序肯定是把米飯和雞蛋混在一起炒勻。蓋澆飯呢,則是把米飯和蓋菜分別做好,你如果要一份紅燒肉蓋飯呢,就給你澆一份紅燒肉;如果要一份青椒土豆蓋澆飯,就給澆一份青椒土豆絲。
蛋炒飯的好處就是入味均勻,吃起來香。如果恰巧你不愛吃雞蛋,只愛吃青菜的話,那么唯一的辦法就是全部倒掉,重新做一份青菜炒飯了。蓋澆飯就沒這么多麻煩,你只需要把上面的蓋菜撥掉,更換一份蓋菜就可以了。蓋澆飯的缺點(diǎn)是入味不均,可能沒有蛋炒飯那么香。
到底是蛋炒飯好還是蓋澆飯好呢?其實(shí)這類問題都很難回答,非要比個(gè)上下高低的話,就必須設(shè)定一個(gè)場(chǎng)景,否則只能說是各有所長(zhǎng)。如果大家都不是美食家,沒那么多講究,那么從飯館角度來講的話,做蓋澆飯顯然比蛋炒飯更有優(yōu)勢(shì),他可以組合出來任意多的組合,而且不會(huì)浪費(fèi)。
蓋澆飯的好處就是"菜""飯"分離,從而提高了制作蓋澆飯的靈活性。飯不滿意就換飯,菜不滿意換菜。用軟件工程的專業(yè)術(shù)語就是"可維護(hù)性"比較好,"飯"和"菜"的耦合度比較低。蛋炒飯將"蛋""飯"攪和在一起,想換"蛋""飯"中任何一種都很困難,耦合度很高,以至于"可維護(hù)性"比較差。軟件工程追求的目標(biāo)之一就是可維護(hù)性,可維護(hù)性主要表現(xiàn)在3個(gè)方面:可理解性、可測(cè)試性和可修改性。面向?qū)ο蟮暮锰幹痪褪秋@著的改善了軟件系統(tǒng)的可維護(hù)性。

? ? ? ?最后,如果想有一群“臭味相投”的朋友來一起交流學(xué)習(xí)的話,歡迎大家搜索群460570824,讓我們共同進(jìn)步!