對(duì)高內(nèi)聚,低耦合的理解

          Posted on 2007-04-08 16:55 久城 閱讀(36988) 評(píng)論(14)  編輯  收藏 所屬分類: 軟件工程
          內(nèi)聚:一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度

          耦合:一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量


          最近編碼的時(shí)候,總是在猶豫是把某個(gè)方法封裝在一個(gè)類里,還是單獨(dú)的封裝成一個(gè)類。這讓我突然想起內(nèi)聚耦合這兩個(gè)名詞。

          我們一直追求著,高內(nèi)聚,低耦合。

          對(duì)于低耦合,我粗淺的理解是:

          一個(gè)完整的系統(tǒng),模塊與模塊之間,盡可能的使其獨(dú)立存在。

          也就是說(shuō),讓每個(gè)模塊,盡可能的獨(dú)立完成某個(gè)特定的子功能。

          模塊與模塊之間的接口,盡量的少而簡(jiǎn)單。

          如果某兩個(gè)模塊間的關(guān)系比較復(fù)雜的話,最好首先考慮進(jìn)一步的模塊劃分。

          這樣有利于修改和組合。

          對(duì)于高內(nèi)聚,我粗淺的理解是:

          在一個(gè)模塊內(nèi),讓每個(gè)元素之間都盡可能的緊密相連。

          也就是充分利用每一個(gè)元素的功能,各施所能,以最終實(shí)現(xiàn)某個(gè)功能。

          如果某個(gè)元素與該模塊的關(guān)系比較疏松的話,可能該模塊的結(jié)構(gòu)還不夠完善,或者是該元素是多余的。

          內(nèi)聚和耦合,包含了橫向和縱向的關(guān)系。功能內(nèi)聚和數(shù)據(jù)耦合,是我們需要達(dá)成的目標(biāo)。橫向的內(nèi)聚和耦合,通常體現(xiàn)在系統(tǒng)的各個(gè)模塊、類之間的關(guān)系,而縱向的耦合,體現(xiàn)在系統(tǒng)的各個(gè)層次之間的關(guān)系。

          對(duì)于我在編碼中的困惑,我是這樣想的,用面向?qū)ο蟮乃枷肴タ紤]一個(gè)類的封裝。
          一個(gè)方法,如何封裝,拿到現(xiàn)實(shí)生活中來(lái)看,看這種能力(方法)是否是屬于這類事物(類)的本能。
          如果是,就封裝在這個(gè)類里。
          如果不是,則考慮封裝在其它類里。
          如果這種能力,很多事物都具有,則一定要封裝在這類事物的總類里。
          如果這種能力,很多事物都會(huì)經(jīng)常用到,則可以封裝成一個(gè)總類的靜態(tài)方法。


          歡迎來(lái)訪!^.^!
          本BLOG僅用于個(gè)人學(xué)習(xí)交流!
          目的在于記錄個(gè)人成長(zhǎng).
          所有文字均屬于個(gè)人理解.
          如有錯(cuò)誤,望多多指教!不勝感激!

          Feedback

          # re: 對(duì)高內(nèi)聚,低耦合的理解  回復(fù)  更多評(píng)論   

          2008-05-25 16:01 by 達(dá)達(dá)
          謝謝了^_^,正在學(xué)習(xí)管理信息系統(tǒng),上課一直沒(méi)明白耦合和內(nèi)聚兩個(gè)概念,看了大俠一文,頓悟

          # re: 對(duì)高內(nèi)聚,低耦合的理解  回復(fù)  更多評(píng)論   

          2008-08-13 19:44 by 小李廣
          不錯(cuò)啊,受用

          # re: 對(duì)高內(nèi)聚,低耦合的理解[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-11-18 10:42 by ethan
          十分感謝~~

          # Rosicky  回復(fù)  更多評(píng)論   

          2009-01-18 11:07 by Rosicky
          Learn a lot from u. How are you these days?

          # re: 對(duì)高內(nèi)聚,低耦合的理解  回復(fù)  更多評(píng)論   

          2009-09-19 17:47 by hxr
          學(xué)習(xí),受用!

          # re: 對(duì)高內(nèi)聚,低耦合的理解  回復(fù)  更多評(píng)論   

          2010-08-31 12:45 by 魏鵬
          謝謝!

          # re: 對(duì)高內(nèi)聚,低耦合的理解  回復(fù)  更多評(píng)論   

          2010-09-06 16:42 by 劉輝亞
          謝謝

          # re: 對(duì)高內(nèi)聚,低耦合的理解  回復(fù)  更多評(píng)論   

          2010-10-15 15:31 by FGW
          學(xué)習(xí)啦 ,非常感謝。
          還有,第二個(gè)“對(duì)于低耦合”是否是筆誤? :)

          # re: 對(duì)高內(nèi)聚,低耦合的理解  回復(fù)  更多評(píng)論   

          2011-01-12 13:13 by 李根瑩
          對(duì)于我在編碼中的困惑,我是這樣想的,用面向?qū)ο蟮乃枷肴タ紤]一個(gè)類的封裝。
          一個(gè)方法,如何封裝,拿到現(xiàn)實(shí)生活中來(lái)看,看這種能力(方法)是否是屬于這類事物(類)的本能。
          如果是,就封裝在這個(gè)類里。
          如果不是,則考慮封裝在其它類里。
          如果這種能力,很多事物都具有,則一定要封裝在這類事物的總類里。
          如果這種能力,很多事物都會(huì)經(jīng)常用到,則可以封裝成一個(gè)總類的靜態(tài)方法。

          對(duì)lz以上的理解非常支持,本人認(rèn)為這不僅僅是對(duì)高內(nèi)聚低耦合的的直觀解釋,也是對(duì)面向?qū)ο蠛芎玫囊粋€(gè)解釋

          # re: 對(duì)高內(nèi)聚,低耦合的理解  回復(fù)  更多評(píng)論   

          2011-01-12 13:54 by 久城
          @FGW
          已修正,多謝。

          # re: 對(duì)高內(nèi)聚,低耦合的理解[未登錄](méi)  回復(fù)  更多評(píng)論   

          2011-04-25 13:49 by walter
          如果這種能力,很多事物都會(huì)經(jīng)常用到,則可以封裝成一個(gè)總類的靜態(tài)方法。

          是不是Utilities class?

          # re: 對(duì)高內(nèi)聚,低耦合的理解[未登錄](méi)  回復(fù)  更多評(píng)論   

          2013-08-23 11:12 by 匿名
          受益啊,多謝多謝!

          # re: 對(duì)高內(nèi)聚,低耦合的理解  回復(fù)  更多評(píng)論   

          2014-05-28 20:07 by 泡沫__opt
          瞬間明了!!!大謝!!!

          # re: 對(duì)高內(nèi)聚,低耦合的理解  回復(fù)  更多評(píng)論   

          2015-07-20 18:10 by 中二
          終于明白了
          ,別人講的太深?yuàn)W了,就不能粗淺的講么真是蛋疼

          Copyright © 久城

          主站蜘蛛池模板: 内黄县| 漳州市| 宁陵县| 丰宁| 关岭| 封丘县| 称多县| 漯河市| 江孜县| 鸡东县| 扶沟县| 祁东县| 白玉县| 金堂县| 德江县| 布尔津县| 黄骅市| 清丰县| 娄底市| 全椒县| 永康市| 汪清县| 合阳县| 甘洛县| 孟津县| 秦皇岛市| 凉山| 尼木县| 金湖县| 临城县| 平果县| 伊金霍洛旗| 襄城县| 普定县| 南阳市| 黄冈市| 清镇市| 贵阳市| 阿坝县| 板桥市| 潞城市|