大家好,我是白澤踪宠。這幾天一直有空就開始了我的博客路自赔。
今天我們來(lái)講講對(duì)象設(shè)計(jì)的技巧吧,之前自己也是一頭霧水柳琢,這對(duì)象想怎么寫就怎么寫唄還設(shè)計(jì)個(gè)錘子吧芊痢?知道在上家公司工作柬脸,因?yàn)橐蟮囊?guī)范比較嚴(yán)格他去,所以在類的設(shè)計(jì)上也是有點(diǎn)要求。之后看了本《java核心技術(shù)》倒堕,如果你是新手灾测,那么我強(qiáng)烈推薦這本書而不是《java編程思想》,后者寫的很好不過(guò)不適合新手看垦巴。你應(yīng)該工作兩三年之后再做看《java編程思想》的打算媳搪,否則你會(huì)浪費(fèi)很多時(shí)間在這本書上而且收獲不大。這是lz對(duì)著兩本書的理解骤宣。好這是題外話蛾号,回到正題。
大家都知道許多編程都有MVC這個(gè)概念涯雅,那這個(gè)概念主要怎么體現(xiàn)的呢鲜结?當(dāng)然是在類的設(shè)計(jì)和功能上體現(xiàn),一般為了層次分明我們會(huì)把有關(guān)數(shù)據(jù)的類封裝成一個(gè)或多個(gè)對(duì)象用于對(duì)數(shù)據(jù)的操作,另外對(duì)該類的數(shù)據(jù)的一些基礎(chǔ)操作也直接定義在這個(gè)類中精刷。換句話說(shuō)也就是如果你現(xiàn)在想定義一個(gè)對(duì)象拗胜,而這個(gè)對(duì)象是描述某個(gè)事物的基本屬性比如一個(gè)人,那么人會(huì)有名字怒允,年齡埂软,性別...等屬性。這時(shí)我們應(yīng)該把這些屬性抽取出來(lái)當(dāng)做一個(gè)單獨(dú)的對(duì)象定義為人的對(duì)象并將private修飾起來(lái)纫事,其次對(duì)這個(gè)對(duì)象的屬性的一些基礎(chǔ)操作也直接寫在這個(gè)類中勘畔,比如最直觀的就是這些屬性的setter,getter方法丽惶。而其他的操作最好都不要放在這個(gè)類里炫七,避免層次上的混淆,而這個(gè)類就算是數(shù)據(jù)層了钾唬。每個(gè)人都有吃飯万哪、睡覺、打豆豆的動(dòng)作抡秆,這時(shí)我們把這三個(gè)動(dòng)作在封裝成一個(gè)對(duì)象做成一個(gè)表現(xiàn)類提供動(dòng)作方法暴露在外使被人調(diào)用奕巍,這就算是一個(gè)表現(xiàn)類。再有那這個(gè)人什么時(shí)候吃飯什么時(shí)候睡覺什么時(shí)候打豆豆呢儒士?這是我們?cè)賹⑦@些時(shí)段抽象出來(lái)封裝成一個(gè)對(duì)象當(dāng)?shù)竭_(dá)某段時(shí)間就做不同的事情那這就相當(dāng)與一個(gè)控制層上的對(duì)象的止,這樣設(shè)計(jì)對(duì)象就能層次分明在修改的時(shí)候也可以避免耦合性太強(qiáng)的問題,相互之間只提供一個(gè)或多個(gè)暴露的接口出來(lái)給他人使用至于內(nèi)部怎么實(shí)現(xiàn)那是各自的事情這樣的代碼可讀性強(qiáng)也比較容易維護(hù)着撩。這也是體現(xiàn)一個(gè)碼農(nóng)的水平的一個(gè)重要途徑冲杀。另外在命名上也要符合相應(yīng)的規(guī)范而且還有該命名能見名知意。
好了睹酌,今天的博客就寫到這了权谁,以后講講在工作中的經(jīng)驗(yàn)和積累,大家有興趣可以關(guān)注微信公眾號(hào) baize1935 獲取更過(guò)文章憋沿。