面向對象的三大特征學習感悟一、封裝
顧名思義:就是封閉包裝
對于資料來講:
就是将同種事物的多種資訊及其行為聚集合成一個整體,便于調用。
對于行為來講:
可以為外界提供多種必要的功能,而不顯露實作功能的細節。類似于相機,有精美的外表,可以實作拍照的功能,但是相機裡面究竟是如何實作拍照的,外界不得而知也不需要知道,同樣,内部的實作細節的變化不會改變外部通路原則,展現了高内聚,低耦合的特征。而且在外部多個對象通路下,不會針對每個對象提供服務,而是同時進行服務。
對于設計來講:
1、為了實作一個大的功能及其需要進行的繁雜的工作,必須進行分工以提高開發效率,封裝實作了不同功能可以分開進行,極大提高了工作的效率。
2、封裝可以實作将不同種類的事物分别包裝,各自實作自己的功能,降低彼此之間因變化引起的影響。當然,對于變化性大的事物,為了避免其因變化而影響其他類,可對其進行單獨的封裝。
學生管理系統就很好的展現了這一點:
1、要實作學生管理系統的運作,需要學生的資訊,包括姓名,年齡等等
2、而管理系統則需要這些資料的邏輯結果,實作增、删、改、顯示、排序等等衆多功能
3、而為了實作這些功能,還必須對學生資訊進行邏輯處理,然後才能得到功能想要的結果。
基于此,将所有學生分為一大類,實作學生資訊邏輯處理的方法函數等等歸為一大類,而負責顯示邏輯處理結果的功能歸為一大類,這樣一來視線就變得清晰很多,不必為了每個學生的資訊單獨進行處理,避免了很多的工作量。
class StudentModel:
class StudentManagerController:
class StudentManagerView:
當然封裝也有禁忌:
1、避免過度封裝,學生在管理系統中資訊的種類全部是一樣的,差別隻在于每個學生資訊的内容不同,符合類的要求和封裝的思想,沒必要分為男生、女生等等類别。像邏輯處理類中的各種功能,比如增加學生、删除學生等等,都是對學生資訊進行批量處理,進行相同的操作,如果全都封裝起來單獨調用,隻是徒增工作量,且不便于統一管理,違背了封裝高内聚的原則。
2、避免封裝過度,将功能集中在一起。例如遊戲中,敵人和玩家,都有血量、攻擊力等屬性和攻擊、掉血、死亡等功能,但是不能放在一起統一管理,因為玩家的功能顯示和敵人不完全一樣,敵人死了遊戲可以繼續,但是玩家死了遊戲就結束,功能有所差別,實作起來就不能統一調用。