文/靳程
Java作為一種當(dāng)下非常流行的程序設(shè)計語言,面向?qū)ο蟮木幊趟枷?,頗受人們的喜愛;而面向?qū)ο缶幊陶Z言都支持三個特性:封裝,繼承,多態(tài)。我們主要以Java為例來談?wù)劮庋b特性。封裝(Encapsulation)是面向?qū)ο蠓椒ǖ闹匾瓌t,就是把對象的屬性和操作(或服務(wù))結(jié)合為一個獨(dú)立的整體,并盡可能隱藏對象的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),控制用戶對類的修改和訪問數(shù)據(jù)的程度。適度的封裝可以讓代碼更容易理解和維護(hù),也加強(qiáng)了程式碼的安全性。
以分析Java的學(xué)習(xí)歷程為例,從基礎(chǔ)語法——>方法,函數(shù)——>類——>jar包——>框架,都始終在秉持一個封裝的思想。由于大量的代碼重復(fù),不僅給編程人員帶來了繁瑣而又沉重的工作量,代碼的冗余使得項(xiàng)目做了沒有意義的放大,使得項(xiàng)目臃腫,進(jìn)而又加重了服務(wù)器的壓力、負(fù)載,降低了服務(wù)器運(yùn)行的效率,除此之外,可讀性也變得很差,對于后期維護(hù)造成了種種困難。
封裝數(shù)據(jù)除了調(diào)用數(shù)據(jù)方便之外,最重要的是可以對數(shù)據(jù)進(jìn)行安全的控制,Java中的封裝,把數(shù)據(jù)做了封裝存儲起來,對于不同的訪問需要設(shè)置權(quán)限管理。首先,我們需要提供一個對外的接口,好比說燈管壞了,我們沒必要知道內(nèi)部線路是怎樣聯(lián)通的,但我們至少得知道燈管的型號,然后去五金店購買新燈管,才能重新接通電路,否則就是答非所問,對不上號也沒法使用,這是封裝數(shù)據(jù)對外訪問需要提供接口的問題;另外,資源共享的時代也是有底線的,需要對一些個人隱私數(shù)據(jù)匹配安全性保護(hù)措施,為此Java設(shè)置了四種訪問控制符來劃分訪問權(quán)限:private,默認(rèn),protected,和public。就拿一個User類來說,里面存放的屬性是name,age,IDCardPass...這些隱私屬性,我們就需要設(shè)置為私有權(quán)限,通過setXXX()和getXXX()方法來與其他類關(guān)聯(lián)溝通,這樣就會避免了所有的類都能訪問的安全隱患,保障數(shù)據(jù)的安全性。對象的數(shù)據(jù)封裝特性還可以把對象的私有數(shù)據(jù)和公共數(shù)據(jù)分離開,保護(hù)了私有數(shù)據(jù),減少了可能的模塊間干擾,達(dá)到降低程序復(fù)雜性、提高可控性的目的。
從HelloWorld一 直 到 JDBC,再 到Spring,Struts2,MyBatis.經(jīng)歷了從變量封裝,方法封裝,類封裝,壓縮成jar包,MVC模式中的分層,再到框架中的Action(Handler)類中注解就可完成實(shí)現(xiàn)映射,取代了在web.xml中用多個標(biāo)簽做映射處理,語句簡短精煉,邏輯清晰明了,開發(fā)效率也越來越高。或許我在這說取代不太合適,因?yàn)樽⒔獠⒉皇侨f能的,不是所有的類或方法上都可加注解,如JdbcTemplate、SessionFactoryBean ...)這些都是第三方提供的,而注解只是能用于我們自定義編寫的類,此時XML就是唯一的配置方式了。所以在開發(fā)過程中,兩者是相輔相成的,開發(fā)人員需靈活運(yùn)用。
正如人們所說的,越好的程序員越“懶”,這并不是真正說程序員懶惰,而是他們擅長于“Ctrl+C/Ctrl+V”。其實(shí)我有問過之前的學(xué)長,都是已經(jīng)就職的程序員,他們在實(shí)踐工作中的開發(fā)情況,答案基本一致。市面上存在的一些XXX信息管理系統(tǒng),XXX自動辦公軟件...前端設(shè)計無非就是被人們已經(jīng)接受的幾種布局格式:‘廠’字形,‘三’字形,‘國’字形...,網(wǎng)上這種美觀,簡約大方的模板比比皆是,都是可以下載到源碼的,然后再根據(jù)實(shí)際情況和用戶的要求進(jìn)行進(jìn)一步訂制更改,直到客戶滿意;后端的實(shí)現(xiàn)是其實(shí)很多功能模塊的代碼都是相似的,只需要修改一小部分就可以了,沒事誰會花大量的時間去敲代碼,所謂的敲代碼,其實(shí)只需要敲一些關(guān)鍵部分的代碼就可以了。當(dāng)然,并不是說這些代碼程序員就不會敲了,只是沒有必要,所以一個項(xiàng)目中,也是符合二八定律的,真正親自動手敲的大概只有20%左右的代碼,其他的復(fù)制粘貼,這一是為了提升效率,二可以減少一些不必要的錯誤。在開源免費(fèi)的計算機(jī)軟件行業(yè)中,這里有豐富共享資源,比如GitHub,我們要學(xué)會將資源利用率達(dá)到最大化。
綜上所述,面向?qū)ο蟮姆庋b思想,在軟件技術(shù)開發(fā)行業(yè)起到了中流砥柱的作用,是發(fā)展階段上的一個重要的里程碑,抽象出公共的部分作為獨(dú)立的模塊,解耦的同時,語義也變得簡單易懂,又大大提高了開發(fā)效率。不僅如此,我們更要去學(xué)習(xí)封裝這種思想,對于同類型項(xiàng)目的研發(fā),市面上的產(chǎn)品有非常高的參考價值和意義,在最快的時間內(nèi)完成廣大使用者更改的需求。