Java 高内聚,低耦合

一、定义

1. 内聚

1.1. 内聚,一个模块内各元素间,结合的紧密程度。

2. 耦合

2.1. 耦合,各个代码块间联系紧密程度的度量(模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。)

2.2. 耦合度,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此软件设计时,应注意降低耦合度。

3. 高内聚

3.1. 高内聚,一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。

4. 低耦合

4.1. 解耦,也成为降低耦合度,解除耦合关系。模块间有依赖关系就必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。

4.2. 低耦合,一个完整的系统,模块与模块之间,尽可能的使其独立存在。即,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。

二、实现“高内聚、低耦合”

接口、继承是解耦合的一种好方法。

1、核心思想,尽可能减少代码耦合,如果发现代码耦合,就要采取解耦技术。让数据模型,业务逻辑和视图显示三层之间彼此降低耦合,把关联依赖降到最低,而不至于 “牵一发而动全身”。
2、原则,A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但就是不要直接交叉写。

3、观察者模式,观察者模式存在的意义就是「解耦」,它使观察者和被观察者的逻辑不再搅在一起。
3.1. 观察者模式的事例
网易新闻的夜间模式,当用户切换成夜间模式之后,被观察者会通知所有的观察者【设置改变了,大家快蒙上遮罩吧】。
QQ消息推送,消息推送来了之后,既要在通知栏上弹个推送,又要在桌面上标个小红点,也是观察者与被观察者的巧妙配合。

三、高内聚、低耦合的好处

1、短期,并没有很明显的好处,甚至短期内会影响系统的开发进度。因为高内聚,低耦合的系统对开发设计人员提出了更高的要求。
2、长期来看,低耦合的模块便于进行单元测试,且便于维护。
3、代码关系过于紧密,往往改一小段代码,需要整个项目做很大的改动。所以在实际开发中应该尽量避免过高的耦合。

四、事例

在java中,程序需要调用类A,如果直接在程序中 new A(),这样就写死了。如果下次业务逻辑有变化,就必须重新修改 类A的代码。在这种情况下,如果 类A被其他程序调用,你修改了 类A的代码,可能会对其他程序造成影响。
但是如果在配置文件里配置你要用到的类的相关属性,通过程序动态获取,则只需要修改这个配置文件,把它指向另一个 类B就行了。用B替代A。这就是低耦合,也是java的面向增加开放,面向修改关闭的原则。

你可能感兴趣的:(Java 高内聚,低耦合)