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