低耦合封裝


什么是封裝?

封裝簡單的說就是用特定的代碼框架將某些功能模塊化曾撤,并且將類中的一些成員變量端姚、方法進行保護,不被外界所訪問到挤悉,有一種權限的控制功能渐裸,能夠增強數據的安全性和簡化程序的編寫工作。

為什么要封裝装悲?

1.代碼邏輯結構更加清晰昏鹃。
2.冗余代碼量減少,更加清爽诀诊。
3.維護量也較低洞渤。

封裝要注意什么?

1.靈活性
2.低耦合
3.易拓展
4.易維護

什么是低耦合属瓣?

低耦合:是軟件工程的一個名詞载迄,多見于面向對象的程序設計中,與之相對應的是內聚抡蛙,軟件設計中通常用耦合度和內聚度作為衡量模塊獨立程度的標準护昧。劃分摸塊的一個準則就是高內聚低耦合(暫且只談耦合)。 耦合度(Coupling)是對模塊間關聯程度的度量粗截。耦合的強弱取決與模塊間接口的復雜性惋耙、調用模塊的方式以及通過界面?zhèn)魉蛿祿亩嗌佟?模塊間的耦合度是指模塊之間的依賴關系,包括控制關系熊昌、調用關系怠晴、數據傳遞關系。模塊間聯系越多浴捆,其耦合性越強蒜田,同時表明其獨立性越差。降低模塊間的耦合度能減少業(yè)務改動引起模塊間的影響选泻,防止
某一模塊修改所引起的“牽一發(fā)動全身”的水波效應冲粤,保證系統(tǒng)設計順利進行美莫。
耦合可以分為很多種,他們之間的耦合度由高到低排列如下:

  1. 內容耦合:這是最高程度的耦合梯捕,也是最差的耦合厢呵。當一個模塊直接使用另一個模塊的內部數據,或通過非正常入口而轉入另一個模塊內部傀顾。
    例:模塊A中定義了變量a襟铭,在模塊B中直接使用了。這種情況下模塊A和模塊B就是內容耦合短曾。
  2. 公共耦合:一組模塊都訪問同一個公共數據環(huán)境寒砖。該公共數據環(huán)境可以是全局數據結構、共享的通信區(qū)嫉拐、內存的公共覆蓋區(qū)等哩都。
    例:定義了一個全局變量a,在A婉徘、B漠嵌、C模塊中均調用了a,這種情況下模塊A盖呼、模塊B儒鹿、模塊C就是公共耦合。
  3. 控制耦合:模塊之間傳遞的不是數據信息几晤,而是控制信息例如標志约炎、開關量等,一個模塊控制了另一個模塊的功能锌仅。
    例:模塊A獲取用戶類型(普通用戶、高級用戶)傳遞給模塊B墙贱,模塊B根據不同類型的用戶提供不同的服務热芹。這種情況下模塊A和模塊B就是控制耦合。
  4. 標記耦合:指兩個模塊之間傳遞的是數據結構惨撇,如高級語言中的數組名伊脓、記錄名、文件名等這些名字即標記魁衙,其實傳遞的是這個數據結構的地址报腔。
    例:模塊A向模塊B傳遞Object類型的數據。這種情況下模塊A和模塊B就是標記耦合剖淀。
  5. 數據耦合:調用模塊和被調用模塊之間只傳遞簡單的數據項參數纯蛾。相當于高級語言中的值傳遞。
    例:模塊A實現兩個數的加法操作纵隔,模塊B實現兩個加數的初始化翻诉,模塊B將兩個加數傳給模塊A炮姨,模塊A進行相加。這種情況下模塊A和模塊B就是數據耦合碰煌。
  6. 非直接耦合:兩模塊間沒有直接關系舒岸,之間的聯系完全是通過主模塊的控制和調用來實現的 。
    例:模塊A實現輸出字符串芦圾,模塊B實現接收int數據蛾派,兩者之間沒有信息傳遞。這種情況下模塊A和模塊B就是非直接耦合个少。

如何降低程序的耦合度洪乍?

(1)少使用類的繼承,多使用協議稍算,隱藏掉一些實現的細節(jié)典尾。 
(2)做出來的模塊盡可能功能單一化。 
(3)遵循一個定義只在一個地方出現糊探,如:宏的使用钾埂,.h文件的運用。 
(4)少使用全局變量科平。 
(5)類屬性和方法的聲明少使用public褥紫,多使用私有化實現。 
(6)多使用設計模式瞪慧,如MVC的設計模式就可以降低界面與業(yè)務邏輯的耦合度髓考。 
(7)盡量不用“硬編碼”的方式寫程序。 
(8)盡量少直接用SQL語句對數據庫進行操作弃酌。 
(9)盡量不要直接操作或跳用其他模塊或類氨菇。

總結:耦合是影響軟件復雜程度和設計質量的一個重要因素,在設計上我們應采用以下原則:若模塊間必須存在耦合妓湘,應盡量使用數據耦合查蓉,少用控制耦合,慎用或有控制地使用公共耦合榜贴,并限制公共耦合的范圍豌研,盡量避免內容耦合。盡量減少由于交互引起的單個模塊無法獨立使用或者無法移植的情況發(fā)生唬党, 盡可能多的單獨提供接口用于對外操作鹃共。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市驶拱,隨后出現的幾起案子霜浴,更是在濱河造成了極大的恐慌,老刑警劉巖蓝纲,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坷随,死亡現場離奇詭異房铭,居然都是意外死亡,警方通過查閱死者的電腦和手機温眉,發(fā)現死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門缸匪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人类溢,你說我怎么就攤上這事凌蔬。” “怎么了闯冷?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵砂心,是天一觀的道長。 經常有香客問我蛇耀,道長辩诞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任纺涤,我火速辦了婚禮译暂,結果婚禮上,老公的妹妹穿的比我還像新娘撩炊。我一直安慰自己外永,他們只是感情好,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布拧咳。 她就那樣靜靜地躺著伯顶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骆膝。 梳的紋絲不亂的頭發(fā)上祭衩,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音阅签,去河邊找鬼掐暮。 笑死,一個胖子當著我的面吹牛愉择,可吹牛的內容都是我干的劫乱。 我是一名探鬼主播织中,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锥涕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了狭吼?” 一聲冷哼從身側響起层坠,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刁笙,沒想到半個月后破花,有當地人在樹林里發(fā)現了一具尸體谦趣,經...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年座每,在試婚紗的時候發(fā)現自己被綠了前鹅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡峭梳,死狀恐怖舰绘,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情葱椭,我是刑警寧澤捂寿,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站孵运,受9級特大地震影響秦陋,放射性物質發(fā)生泄漏。R本人自食惡果不足惜治笨,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一驳概、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧大磺,春花似錦抡句、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至流济,卻和暖如春锐锣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绳瘟。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工雕憔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人糖声。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓斤彼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蘸泻。 傳聞我的和親對象是個殘疾皇子琉苇,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內容

  • 關于低耦合封裝 要探討低耦合封裝,就必須先簡單說說對封裝的理解悦施。 什么是封裝并扇?封裝簡單的說就是用特定的代碼框架將某...
    ZJ_偶爾上路閱讀 1,062評論 0 3
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,144評論 25 707
  • iOS網絡架構討論梳理整理中。抡诞。穷蛹。 其實如果沒有APIManager這一層是沒法使用delegate的土陪,畢竟多個單...
    yhtang閱讀 5,193評論 1 23
  • “你衡量一個人值不值得深交的標準是什么?”“合眼緣”肴熏,這是我五年前的答案鬼雀,而今天,我想再加一條“即使情緒非常糟糕蛙吏,...
    快雪時清閱讀 507評論 0 1
  • 1 這是今天文章的第二個標題出刷,為什么會出現第二個標題呢璧疗?因為此前的那篇文章因為錘子便簽突然出現的bug,將...
    王二道閱讀 355評論 0 3