一起來看看大道至簡的一些基本設計思想,首先我們來看一下什么是封裝,
封裝:也叫做資訊隱藏,或者資料訪問保護,放到程式上來講,就是隱藏類的屬性,還有實作細節,僅對外公開一些介面,那么外部,就只能通過這個類暴露的這些訪問介面,按照這個類提供的方式來訪問類的內部資訊或者資料,這樣子的一種情況就叫做封裝,
作為做Java的我們來講,封裝,我們是非常非常熟悉的,因為一開始學Java,學面向物件,就會講封裝、繼承和多型,
接下來,我們就來談一談,到底面向物件當中封裝的本質是什么,其實從字面意義上理解封裝,就是把什么東西包裝起來,進一步說就是一個封裝體,事實上大家想,面向物件當中,類是不是就是一個封裝體?
大家想想,類里面封裝的什么呢?無外乎就是一些屬性,就是一些資料,然后是方法,其實可以代表它的功能,
也就說一個類,它就是封裝了一定功能的這么一個封裝體,
當然,封裝并不僅僅只是對一個類而言,你可以擴大一點,以此類推,從設計的角度來看:一個組件是不是一個封裝?只不過它封裝的,不再是屬性、方法,它里頭封裝的就是一個一個的,其它組件或者模塊,或者是類,
以此類推,組件是一個封裝體,那模塊是不是一個封裝體? 子系統是不是一個封裝體?系統是不是還是一個封裝體?
只是范圍大小不同而已,所以大家會發現,封裝是咱們做架構設計一個非常非常基礎的、非常重要的思想,
咱們再從另外一個角度來看一看,類,它其實是代碼功能的一個封裝,或者說是一個聚合方式,
沒有面向物件之前,咱們叫做面向程序設計,或者叫程序化設計,大家可以理解成是這樣,這里面有一堆的代碼,我們稱之為函式,或者說是一些程序,
在程序化設計里面,這些功能都是比較散亂的堆放在一起,也就說每一個功能只管自己,跟其它功能沒有什么聯系,但后來大家覺得,這樣子去擺放代碼非常的不友好,要想找一個功能,尤其是帶流程的,那就在里頭跳來跳去,非常的亂,
大家就想到一個辦法:把相關的一些功能,比方說發現這里的功能是相關的,都是用來做,比方說用戶資料的管理,我們就可以把這個東西封裝起來,然后就演化成,可以用一個類來封裝這些東西,就開始面向物件設計了,
這些功能都是相關的,都是用戶這個物件應該要實作的功能,也就說從代碼的角度,也能夠感覺得到,面向物件設計實際上就是把原來這些程序化設計當中,雜亂無章的這些函式或者是功能,按照一定的方式重新進行組織,把它們封裝到一起,所以說呢,從某種意上說,類是代碼的一種聚合方式,
咱們一個完整的軟體系統,就是由大大小小的,各種不同的這種封裝體聚合起來的,就好比說一個大的軟體系統,又分成了很多的子系統,這個子系統其實也是一種封裝,
這個子系統又包含另外的子系統,每個子系統里面可能有很多的模塊或者是組件,這些組件里面又有很多具體的功能,也就是它封裝的是一定的功能, 這不就是大大小小的封裝,最終合起來就是你的這個系統,
所以說大家要從架構設計的眼光來看待這些問題,你看一個大的軟體系統不就是大大小小的各種各樣的封裝體嗎?至于這里頭到底封裝的是什么,這個東西就看你怎么劃分了,直到最后落實到具體的功能上,
從設計上來講,到底封裝什么呢?對于每一個封裝體來說,主要就是為了把核心業務部分,或者是核心功能部分封裝起來,那么這么封裝起來有什么樣的好處呢?也就是為什么要封裝呢?
大家想想,當你把這些核心功能封裝起來過后,首先對核心功能是一個安全保護,另外呢,也是為了復用這些核心的功能,除了這些呢,把這包裝起來的目的,是為了可修改,可維護,可擴展,
有些人說,怎么還會可修改可維護呢?很簡單,你把這些功能封裝在這個,比方說橢圓里面封裝了一堆的功能,事實上,這內部的功能和外部是不是就分開了?你封裝的這些功能是不是就可以單獨的進行修改,進行維護,并且進行擴展,
只要對外提供的介面不發生變化,那你封裝起來的這一塊,是不是就可以隨便改了,所以說呢,從某種意義上來說,也是封裝了變化,
當你覺得這一塊以后可能會變,就可以把這塊先包裝起來,那么以后的變化,就可以在封裝體內來實作,而不會影響到外部,當然這個了,跟咱們接下去要講的一個思想:隔離,是息息相關的,或者是有類似之處的,總之呢,大家會發現封裝對我們來講,是一個非常非常重要的思想,我們一定要重視對他的理解,
為了大家更好的交流架構設計的思想和知識,大家可以加sishuok,拉你進架構設計群,一起共同學習,共同進步,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/545633.html
標籤:其他
上一篇:解釋器模式
