[技術討論]OO原則中鬆耦合與高內聚的分析

qingrun發表於2010-02-11

水木上一個人問的關於OO原則的問題,其中涉及到高內聚與鬆耦合之間的細節區分的內容。

發信人: jamen (*******), 信區: SoftEng
標  題: 問個概念問題
發信站: 水木社群 (Fri Feb  5 13:42:31 2010), 站內

A team of programmers is reviewing a proposed API for a new utility class. A
fter some discussion, they realize thatthey can reduce the number of methods
in the API without losing any functionality. If they implement the new
design,which two OO principles will they be promoting?

A. Looser coupling

D. Higher cohesion

F. Stronger encapsulation


我也不知道正確答案有幾個,想不明白

發信人: lilax (阿香), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Fri Feb  5 14:30:18 2010), 站內

F肯定有

D不大清楚,如果就這三個裡面選的話,就選DF吧

發信人: jamen (*******), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Fri Feb  5 14:33:14 2010), 站內

呵呵暈了,剛在另外一個地方問,一哥們兒說選AD

發信人: lilax (阿香), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Fri Feb  5 14:58:40 2010), 站內

我不確定,你再問別人吧

好像AF也沒什麼不可能

發信人: qingrun (青潤), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Fri Feb  5 15:11:32 2010), 站內

這個問題就是說原來有一個類,經過分析後發現,可以減少一些類中的方法,而類的設計功能不變


而減少了方法後的類,必然是提高了類內部的聚合能力,所以D的可能性很大。
這裡只提到了類的問題,沒有提到與其它模組之間的連線關係如何實現,是否因此需要原來的類內

多個方法呼叫用一個方法完成,所以,無法確定是否一定實現了A。因此A不確定。
同理,F也有可能,但是,也不好確定是否一定有它,因為這段內容對類的實現沒有說出具體的設

計改變的方法。

發信人: Slimxp (愛上技術), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Fri Feb  5 15:56:03 2010), 站內

A D吧,低耦合高匯聚,這不是OO軟工裡面一直提倡的嗎?

發信人: zhangmike (克強總~~~~~~~~~~~~~~理不是偶), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Fri Feb  5 22:07:54 2010), 站內

B,C,E等有沒有啊?

發信人: qlw (錢五哥), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Fri Feb  5 22:47:22 2010), 站內


可能D、F適用,減少API就意味著需要在介面中包含更多功能,則封裝更多;
同時對模組設計來說,內聚性更強。


發信人: qingrun (青潤), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Fri Feb  5 22:58:13 2010), 站內

F的描述也不是很多,A的可能性不大,D的可能性最大。

發信人: jamen (*******), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Sat Feb  6 03:53:56 2010), 站內

有這樣一種想法:想像兩個場景,封裝的都很好,一種是鬆耦合一種是緊耦合,顯然緊
耦合需要提供更多的API來支援耦合。

這樣一想,是不是鬆耦合也有可能了?


發信人: qingrun (青潤), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Sat Feb  6 14:42:10 2010), 站內

OO原則中提到的是鬆耦合,高內聚.
內聚性只需要看這個介面或者類的內部設計的情況即可,而耦合是類間關係,沒有直接的類間關係

的描述,所以,這個問題中不好說耦合度的變化問題。原題目內容較少,這方面是沒法判斷的。


發信人: jamen (*******), 信區: SoftEng
標  題: Re: 問個概念問題
發信站: 水木社群 (Sun Feb  7 00:43:53 2010), 站內

呵呵,好的,多謝了

【 在 qingrun (青潤) 的大作中提到: 】
: OO原則中提到的是鬆耦合,高內聚.
: 內聚性只需要看這個介面或者類的內部設計的情況即可,而耦合是類間關係,沒有直接的類間關

系的描述,所以,這個問題中不好說耦合度的變化問題。原題目內容較少,這方面是沒法判斷的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/257598/viewspace-627220/,如需轉載,請註明出處,否則將追究法律責任。

相關文章