Foreword 抽象和接口是Java中的兩個(gè)關(guān)鍵字,也是兩種最基本的優(yōu)化軟件項(xiàng)目手段。為什么說(shuō)它們是一種優(yōu)化項(xiàng)目的手段? 人分三六九等,不同等級(jí)的人,所接觸的事和處理的事是不一樣的。同理,項(xiàng)目也分大項(xiàng)目和中項(xiàng)目和小項(xiàng)目,大、中、小項(xiàng)目所承載的目標(biāo)也是不一樣的。 先說(shuō)小項(xiàng)目,如果你使用Java只是寫(xiě)
抽象和接口是Java中的兩個(gè)關(guān)鍵字,也是兩種最基本的優(yōu)化軟件項(xiàng)目手段。為什么說(shuō)它們是一種優(yōu)化項(xiàng)目的手段?
人分三六九等,不同等級(jí)的人,所接觸的事和處理的事是不一樣的。同理,項(xiàng)目也分大項(xiàng)目和中項(xiàng)目和小項(xiàng)目,大、中、小項(xiàng)目所承載的目標(biāo)也是不一樣的。
先說(shuō)小項(xiàng)目,如果你使用Java只是寫(xiě)一個(gè)小腳本,比如更新一下系統(tǒng)時(shí)間,自動(dòng)點(diǎn)擊某個(gè)軟件按鈕,修改表格數(shù)據(jù)...類(lèi)似這樣的功能。對(duì)于這種小項(xiàng)目,項(xiàng)目里無(wú)非三、兩個(gè)功能函數(shù),有個(gè)Main按照順序調(diào)用一下即可,那么這種項(xiàng)目就永遠(yuǎn)都不需要使用到抽象和接口。用了反而是累贅,有畫(huà)蛇添足的味道。
但是對(duì)于大項(xiàng)目就不同了,比如一個(gè)大型的電商系統(tǒng),用戶(hù)的需求多、使用人群廣、數(shù)據(jù)類(lèi)型多且需要一定關(guān)聯(lián)度。商品種類(lèi)多、店鋪的類(lèi)型各異...,當(dāng)然這些都是在系統(tǒng)設(shè)計(jì)階段的麻煩。在開(kāi)發(fā)階段的麻煩是,不同項(xiàng)目組的人都做不同的模塊,一個(gè)項(xiàng)目組的人怎么配合也是麻煩,最后數(shù)據(jù)對(duì)接起來(lái)也是麻煩、前后端之間的數(shù)據(jù)對(duì)接...,怎么樣,想想都頭疼了吧。
為什么說(shuō)有了抽象和接口,能給大型項(xiàng)目帶來(lái)便利、優(yōu)化?
一些前人留下了一些經(jīng)典的設(shè)計(jì)模式,比如單一模式,指在設(shè)計(jì)的時(shí)候要保證類(lèi)的單一功能,如果完全按照這種模式,那么業(yè)務(wù)的實(shí)現(xiàn)會(huì)變成無(wú)數(shù)個(gè)類(lèi),并且代碼間非常耦合,在修改業(yè)務(wù)需求和代碼的時(shí)候,都是一場(chǎng)災(zāi)難。
接口則是解耦的最基本工具,接口允許將方法的定義與其實(shí)現(xiàn)分開(kāi),這種分離使得多個(gè)不相關(guān)的類(lèi)能夠?qū)崿F(xiàn)同一組方法,從而保證了項(xiàng)目中不同部分之間的相互通信。
抽象類(lèi)非常適合多個(gè)子類(lèi)共享共同特征和屬性,但也兼容自己獨(dú)有的行為情況,同時(shí)為子類(lèi)的定制實(shí)現(xiàn)留出空間。
這個(gè)現(xiàn)象讓我想到對(duì)有序數(shù)組的排序:
就類(lèi)似對(duì)有序數(shù)組進(jìn)行排序,使用冒泡排序和二分查找算法去實(shí)現(xiàn),雖然都能完成這個(gè)效果。但是它們的時(shí)間復(fù)雜度差異也很大,差了一個(gè)數(shù)量級(jí)。
同樣的,你不使用抽象和對(duì)象也一樣能實(shí)現(xiàn)大型項(xiàng)目,但是效果不一樣,在管理的復(fù)雜度上也不一樣。
如果說(shuō)冒泡和二分體現(xiàn)的差異在時(shí)間和空間上。那么設(shè)計(jì)不合理的項(xiàng)目,就體現(xiàn)在在代碼的工作量上。
當(dāng)然,項(xiàng)目中增加了抽象和接口,新人的理解難度也直線(xiàn)上升,這也逼迫這個(gè)項(xiàng)目的程序員都必須得安裝OOP思想,才能上手這種項(xiàng)目。
小編推薦閱讀機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實(shí)現(xiàn)對(duì)象集合與DataTable的相互轉(zhuǎn)換
閱讀鴻蒙NEXT元服務(wù):論如何免費(fèi)快速上架作品
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀升訊威在線(xiàn)客服與營(yíng)銷(xiāo)系統(tǒng)介紹
閱讀基于鴻蒙NEXT的血型遺傳計(jì)算器開(kāi)發(fā)案例
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶(hù)端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動(dòng)態(tài)代理的對(duì)比分析
閱讀Win11筆記本“自動(dòng)管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)