“强内聚,松耦合”无敌攻略版

一、概念理解
一个软件是由多个子程序组装而成,而一个程序由多个模块(方法)构成。
而内聚就是指程序内的各个模块之间的关系紧密程度,耦合就是各个外部程度

(子程序)之间的关系紧密程度。

耦合式对某个元素与其他元素之间来凝结、感知、和依赖的度量。这里说的元

素可以使功能、对象(类),也可以值系统、子系统、模块。它取决于每个模

块之间的接口的复杂程度,调用模块的方式——即有哪些信息通过接口,一般

模块之间可能的连接方式有七种,耦合性由低到高分别是:非直接耦合,数据

耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合。(其中连接方

式的详细解释待查)
具体说那些是耦合:
1.元素B是元素A的属性,或者元素A引用了元素B的实例(这包括元素A调用的

某个方法,其参数中包含元素B)。

2.元素A调用了元素B的方法。

3.元素A直接或间接成为元素B的子类。

4.元素A是接口B的实现。


高内聚和低耦合其实是一对矛盾的关系,高内聚不是绝对,过度的内聚必将增

减系统中元素之间的依赖,提高耦合度。在李洋等人翻译的《UML和模式应用》

中,将内聚和耦合翻译为软件工程中的阴与阳,是中国人对内聚和耦合的最佳

解释。如果处理好两者的关系,会提高代码下面三个方面的性能:

1、可读性,清晰地功能划分,通过类名或说明就能明白该类的意义,类的某个

属性和方法也都能很容易看出。能提高软件开发的协作和分工效率。

2、复用性:在软件开发中,最低等级的复用是代码的拷贝,然后是函数的复用

对象的复用、组件的复用。如果,一段代码能直接拷贝到别处使用,就是高复

用性的。

3、可维护性和易变性:新的功能和适应新的变化。

 

 

二、如何处理“高内聚”和“低耦合”的关系

1、耦合和内聚是一个矛盾的两个方面。通常应该在层次性上作出折衷,如:模

块内子程序(下一个层次上)应共享数据(有一定的耦合度),而减少全局变

量能降低子程序见的耦合度。
2、我们应该努力降低耦合的是那些可能发生变更的地方,因为降低耦合是有代

价的,是以增加资源耗费和代码复杂度为代价的。
一个软件的业务罗和采用的技术框架往往是容易变化的两个方面。

 

 


三、如何降低耦合


1、通过应用设计模式实现“低耦合”


诸如创建者模式、信息专家模式根本目的就是降低耦合。
目前已有大量的框架帮助我们降低系统的耦合度。比如,使用struts我们可以

应用MVC模型,使页面展现与业务逻辑分离,做到了页面展现与业务逻辑的低耦

合。


2、合理的职责划分


让系统中的对象格斯其责


3、使用接口而不是继承(这一点暂时还不是很理解)


继承就是一种耦合,如果使用了继承,一旦父类发生变化,子类就要改变了。

 

 

四、总结

 

人们易于实现内聚的模块,而人们不易实现松耦合,应为孤独的模块毫无意义

,只有模块间的相互调用相互协调的功过,才能实现系统的目的。而对于模块

间的相互关系的设计,没有一定的经验是难以把握。耦合的强度依赖于:(1)

一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(

3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度

。等等。

如果是人多人协作开发一个系统,比如这次的通信中的客户端和服务器的分工

,应该减少工作相关性或者有明确的接口。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java高内聚低耦合是一种软件设计原则,它意味着在一个系统或模块中,各个组件之间相互依赖度低,独立性高,可以方便地修改、扩展和重用。下面以一个订单系统为例,说明Java高内聚低耦合的示例。 假设我们有一个订单系统,它包括订单管理、商品管理和用户管理三个模块。高内聚低耦合的设计将按照功能将不同的模块拆分成各个独立的类,每个类只负责自己的职责。比如,订单管理模块的类包括Order、OrderItem和OrderService,商品管理模块的类包括Product和ProductService,用户管理模块的类包括User和UserService。 在这个设计中,各个模块之间尽量减少依赖关系,只通过接口或提供的公共方法进行通信,类之间的调用关系简单清晰。比如,订单管理模块中的OrderService类只依赖于商品管理模块的ProductService接口和用户管理模块的UserService接口,而不依赖具体的实现类。这样,当需要修改或扩展商品管理或用户管理模块时,订单模块不会受到影响,只需要修改相应的接口和实现类即可。 另外,高内聚低耦合的设计也能够提高代码的重用性。比如,商品管理和用户管理模块的一些公共方法可以抽象成一个BaseService类,让需要使用这些方法的模块进行继承。这样,不同的模块可以复用相同的代码,避免了重复编写类似的功能。 综上所述,Java高内聚低耦合示例通过模块的拆分和减少依赖关系,实现了系统的灵活性和扩展性,提高了代码的重用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值