面向?qū)ο缶幊淌腔凇笔挛飳傩院头椒ㄓ泄残浴钡那疤嵯虏拍茏畲蠡l(fā)揮其效用的。
如果一個(gè)系統(tǒng)中有共性的類(lèi)不多,無(wú)法/沒(méi)必要進(jìn)行抽象,那就不適合使用這一編程模型。因?yàn)轭?lèi)實(shí)例化需要大量運(yùn)算和內(nèi)存。此時(shí),使用面向過(guò)程的語(yǔ)言更合適。面向過(guò)程語(yǔ)言中所有方法都是靜態(tài)的,無(wú)需實(shí)例化便可隨意調(diào)用,占用內(nèi)存和CPU時(shí)間更少。需要解決的問(wèn)題是:
變量、方法的作用域問(wèn)題并行時(shí)沖突的問(wèn)題基類(lèi)與子類(lèi)實(shí)例變量數(shù)不同
對(duì)于問(wèn)題1,在可信任的編程環(huán)境中不必考慮惡意篡改和調(diào)用;即使考慮,也可以使用語(yǔ)言提供的機(jī)制(閉包、返回函數(shù)、模塊等)進(jìn)行規(guī)避;對(duì)于問(wèn)題2,可以考慮使用單線(xiàn)程語(yǔ)言(如js)或鎖(語(yǔ)言提供或自己實(shí)現(xiàn))進(jìn)行規(guī)避;對(duì)于問(wèn)題3,在面向過(guò)程編程中,設(shè)計(jì)方法時(shí)往往會(huì)保持純函數(shù)特性,如果函數(shù)需要用到什么變量,通過(guò)函數(shù)參數(shù)定義傳入,函數(shù)中間不引用任何實(shí)參以外的變量,因此便沒(méi)有了成員變量的必要;在我的實(shí)踐中,一個(gè)復(fù)雜的全量業(yè)務(wù)使用面向過(guò)程式nodejs實(shí)現(xiàn)時(shí),運(yùn)行時(shí)內(nèi)存占用也不過(guò)20M,但一個(gè)簡(jiǎn)單業(yè)務(wù)的java實(shí)現(xiàn)會(huì)輕易就超過(guò)50M.
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注