什么是封裝?
封裝簡單的說就是用特定的代碼框架將某些功能模塊化曾撤,并且將類中的一些成員變量端姚、方法進行保護,不被外界所訪問到挤悉,有一種權限的控制功能渐裸,能夠增強數據的安全性和簡化程序的編寫工作。
為什么要封裝装悲?
1.代碼邏輯結構更加清晰昏鹃。
2.冗余代碼量減少,更加清爽诀诊。
3.維護量也較低洞渤。
封裝要注意什么?
1.靈活性
2.低耦合
3.易拓展
4.易維護
什么是低耦合属瓣?
低耦合:是軟件工程的一個名詞载迄,多見于面向對象的程序設計中,與之相對應的是內聚抡蛙,軟件設計中通常用耦合度和內聚度作為衡量模塊獨立程度的標準护昧。劃分摸塊的一個準則就是高內聚低耦合(暫且只談耦合)。 耦合度(Coupling)是對模塊間關聯程度的度量粗截。耦合的強弱取決與模塊間接口的復雜性惋耙、調用模塊的方式以及通過界面?zhèn)魉蛿祿亩嗌佟?模塊間的耦合度是指模塊之間的依賴關系,包括控制關系熊昌、調用關系怠晴、數據傳遞關系。模塊間聯系越多浴捆,其耦合性越強蒜田,同時表明其獨立性越差。降低模塊間的耦合度能減少業(yè)務改動引起模塊間的影響选泻,防止
某一模塊修改所引起的“牽一發(fā)動全身”的水波效應冲粤,保證系統(tǒng)設計順利進行美莫。
耦合可以分為很多種,他們之間的耦合度由高到低排列如下:
-
內容耦合:這是最高程度的耦合梯捕,也是最差的耦合厢呵。當一個模塊直接使用另一個模塊的內部數據,或通過非正常入口而轉入另一個模塊內部傀顾。
例:模塊A中定義了變量a襟铭,在模塊B中直接使用了。這種情況下模塊A和模塊B就是內容耦合短曾。 -
公共耦合:一組模塊都訪問同一個公共數據環(huán)境寒砖。該公共數據環(huán)境可以是全局數據結構、共享的通信區(qū)嫉拐、內存的公共覆蓋區(qū)等哩都。
例:定義了一個全局變量a,在A婉徘、B漠嵌、C模塊中均調用了a,這種情況下模塊A盖呼、模塊B儒鹿、模塊C就是公共耦合。 -
控制耦合:模塊之間傳遞的不是數據信息几晤,而是控制信息例如標志约炎、開關量等,一個模塊控制了另一個模塊的功能锌仅。
例:模塊A獲取用戶類型(普通用戶、高級用戶)傳遞給模塊B墙贱,模塊B根據不同類型的用戶提供不同的服務热芹。這種情況下模塊A和模塊B就是控制耦合。 -
標記耦合:指兩個模塊之間傳遞的是數據結構惨撇,如高級語言中的數組名伊脓、記錄名、文件名等這些名字即標記魁衙,其實傳遞的是這個數據結構的地址报腔。
例:模塊A向模塊B傳遞Object類型的數據。這種情況下模塊A和模塊B就是標記耦合剖淀。 -
數據耦合:調用模塊和被調用模塊之間只傳遞簡單的數據項參數纯蛾。相當于高級語言中的值傳遞。
例:模塊A實現兩個數的加法操作纵隔,模塊B實現兩個加數的初始化翻诉,模塊B將兩個加數傳給模塊A炮姨,模塊A進行相加。這種情況下模塊A和模塊B就是數據耦合碰煌。 -
非直接耦合:兩模塊間沒有直接關系舒岸,之間的聯系完全是通過主模塊的控制和調用來實現的 。
例:模塊A實現輸出字符串芦圾,模塊B實現接收int數據蛾派,兩者之間沒有信息傳遞。這種情況下模塊A和模塊B就是非直接耦合个少。
如何降低程序的耦合度洪乍?
(1)少使用類的繼承,多使用協議稍算,隱藏掉一些實現的細節(jié)典尾。
(2)做出來的模塊盡可能功能單一化。
(3)遵循一個定義只在一個地方出現糊探,如:宏的使用钾埂,.h文件的運用。
(4)少使用全局變量科平。
(5)類屬性和方法的聲明少使用public褥紫,多使用私有化實現。
(6)多使用設計模式瞪慧,如MVC的設計模式就可以降低界面與業(yè)務邏輯的耦合度髓考。
(7)盡量不用“硬編碼”的方式寫程序。
(8)盡量少直接用SQL語句對數據庫進行操作弃酌。
(9)盡量不要直接操作或跳用其他模塊或類氨菇。
總結:耦合是影響軟件復雜程度和設計質量的一個重要因素,在設計上我們應采用以下原則:若模塊間必須存在耦合妓湘,應盡量使用數據耦合查蓉,少用控制耦合,慎用或有控制地使用公共耦合榜贴,并限制公共耦合的范圍豌研,盡量避免內容耦合。盡量減少由于交互引起的單個模塊無法獨立使用或者無法移植的情況發(fā)生唬党, 盡可能多的單獨提供接口用于對外操作鹃共。