请一起总结一下降低耦合的方法

liuhui810 2004-10-29 09:12:38
看了不少书,也明白了很多东西。但真要我有条理的一一谈谈,还真无从说起。
所以我抛块砖,请高手们多指较一二。

比如,较少耦合的一个较好方法是将类分组,然后组织成包,并限制包间的依赖关系。
...全文
3012 76 打赏 收藏 转发到动态 举报
写回复
用AI写文章
76 条回复
切换为时间正序
请发表友善的回复…
发表回复
AutoAsm 2005-03-21
  • 打赏
  • 举报
回复
(1)对于有n个元素的系统,可能的耦合关系复杂度为O(n^2)
(2)采用划分成子系统的方法(允许子系统嵌套),耦合关系可以降低到O(ln(n))的复杂度。
(3)采取分层次的方法,耦合关序复杂度可以达到O(n)的水平。

--------------

不错。
hmyujian 2005-03-02
  • 打赏
  • 举报
回复
mark!!
SInoyew 2005-02-16
  • 打赏
  • 举报
回复
去耦的同时往往可能会带来新的潜在的耦合.
一切具体的问题都回归为哲学问题...
很不错!
apollo333 2005-02-08
  • 打赏
  • 举报
回复
同意楼上的。每一句都很实在。

再具体一点,应该多用好的设计原理和设计模式在面向对象的开发中,因为都是很多年积累下来的经验。对于大多数系统,都能起到一定的积极作用。好的设计原理包括SRP,OCP,DIP,LSP。还有更多设计模式来应用。

如果能采用TDD开发当然很理想。

另外,频繁的重构也非常重要。
AutoAsm 2005-02-04
  • 打赏
  • 举报
回复
良好的设计和接口与实现的分离是减少耦合的有效方法。

但是一般来讲,减小耦合会在实现上增加工作量,当然,代码更易于维护和变更。

如果你手头没有设计方面比较扎实的人,减小耦合是空谈,都是一些guideline的指导,具体还是得有牛人来设计。
cnepine 2005-01-26
  • 打赏
  • 举报
回复
少使用继承,多使用组合。

模块的功能化分尽可能的单一。

遵循一个定义只在一个地方出现。

少使用全局变量。

类属性的封装一定使用private关键字,类属性的设置和获得使用set和get方法。

simon_sun_simon 2005-01-21
  • 打赏
  • 举报
回复
人类越是可以追求什么越是适得其反,正像现代化带给人类的是方便,然而从长远的角度上看,却是间接的破环人类的生存环境!工业化越严重的城市自然环境也就差!去耦合的情况应该是实际情况而定,可以的追求反而适得其反!正像oz6说的,去耦合的过程中,实际也隐藏着潜在的耦合。
sjf331 2005-01-13
  • 打赏
  • 举报
回复
避免循环调用
许野平 2004-12-15
  • 打赏
  • 举报
回复
(1)对于有n个元素的系统,可能的耦合关系复杂度为O(n^2)
(2)采用划分成子系统的方法(允许子系统嵌套),耦合关系可以降低到O(ln(n))的复杂度。
(3)采取分层次的方法,耦合关序复杂度可以达到O(n)的水平。


liuhui810 2004-12-14
  • 打赏
  • 举报
回复
虽然大家你说一句,我说一句,但是我越来越清楚了.讨论真好.
iceneve 2004-12-14
  • 打赏
  • 举报
回复
耦合和内聚分别是设计发展和变化的外因和内因,内因是根据,外因是条件,外因通过内因起作用。
所以,没有绝对意义下的解耦,在面向对象的设计中,所有的设计问题都应该可以归结到“单一职责原理SRP”的应用上。
金庆 2004-12-14
  • 打赏
  • 举报
回复
就象庖丁解牛,要在关节处分离,而不要去砍骨头。
liuhui810 2004-12-13
  • 打赏
  • 举报
回复
哈哈,这个讨论进首页啦.
zijida 2004-12-13
  • 打赏
  • 举报
回复
Panr(光荣) ( ) 信誉:99 2004-11-17 12:54:39 得分: 0

我不是学模式设计的,就讲讲自己的写代码的一个体会吧:在功能的实现函数中决不操作成员变量,全部数据通过函数的参数传入。


--------------------------------------------------------------------------------------

同意这个。
1.在问题域上尽力划分出较小关联的功能分布
2.通过定义良好的接口来实现不同的功能域之间的信息交换
3.一个功能域内的操作不应该直接或者潜在的改变其他功能域的状态和行为方式
4.一个功能域内发生的异常和数据造成的破坏不应该扩展到其他相关功能域


autoegg 2004-11-25
  • 打赏
  • 举报
回复
Mark
lwj_dxy 2004-11-23
  • 打赏
  • 举报
回复
Mark
SimerJoe 2004-11-20
  • 打赏
  • 举报
回复
Mark
vc_hking 2004-11-18
  • 打赏
  • 举报
回复
降低耦合的思路类似于是它服用性更好,改动量尽可能的少,不要造成大面积的污染。
Panr 2004-11-17
  • 打赏
  • 举报
回复
我不是学模式设计的,就讲讲自己的写代码的一个体会吧:在功能的实现函数中决不操作成员变量,全部数据通过函数的参数传入
likunfeng 2004-11-17
  • 打赏
  • 举报
回复
般个凳子学软工
加载更多回复(55)

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧