当前位置:首页 > 天道酬勤 > 正文内容

高内聚低耦合好处(软件设计的本质是高内聚低耦合)

张世龙2021年12月21日 19:48天道酬勤1150

模块

模块是指从逻辑上把系统分解为更精细的部分,分割治疗,把复杂的问题分解为几个简单的问题,一个一个解决。

结合主要描述模块之间的关系,凝聚主要描述模块内部。 模块的粒度可以是干净的钢笔,也可以是函数、类、功能块等。

耦合

模块之间存在依赖关系,因此变更可能会相互影响,关系越紧密,耦合越强,模块的独立性越差。

例如,在模块a直接操作模块b数据的情况下,视为强耦合,在模块a仅通过数据与模块b进行交换的情况下,视为弱耦合.

独立模块易于扩展、维护、单元测试写入,模块之间依赖度高会大大降低开发效率。

内聚

模块内部的要素,关联性越强凝聚性越高,模块的单一性更强。 一个模块必须尽可能独立地完成某项功能。

如果有需要引入当前模块的场景,代码质量将变得非常脆弱。 在这种情况下,建议将其分割为多个模块。

低凝聚的模块代码无论是维护、扩展还是重构都相当麻烦,难以插手

接口设计原则

好接口应满足设计模式的六大原则,许多设计模式、框架都基于高凝聚低耦合的出发点。

单一职责原则:1个班级只负责一个功能领域中的相应职责。 原则上:1个软件实体必须对扩展开放,对修改关闭。 引用健忘的摄像机替换原则:的所有基类(父类)的位置必须能够透明地使用该子类的对象。 依赖逆转原则:抽象不能依赖于细节,细节必须依赖于抽象。 换句话说,不是为了接口而编程,而是为了接口而编程。 接口隔离原则:使用多个专用接口,而不是单个总接口。 也就是说,客户端不应该依赖不必要的接口。 德米特里定律3360软件实体必须尽可能减少与其他实体的交互,例如外观模式和暴露于外部的统一接口。 列举几个栗子

外观模式

为系统中的多个子系统提供一致的对外调用,对客户端隐藏子系统细节,降低与子系统的耦合。

桥接模式

在JDBC中,制造商接口(Driver )和用户API(DriverManager )是分离的。

//开发者只关注JDBC API,而不需要关注不同数据库的驱动程序接口的实现

class.forname (com.MySQL.JDBC .驱动程序);

连接=驱动程序管理器. getconnection (URL、用户名、密码);

适配器模式

引入第三方库(hibernate,log4j ),不应该直接在代码中继承或使用实体类。

需要提取上层的统一接口,然后增加实现类,使接口暴露在外部。

//代码与log4j强力结合,不推荐使用

org.Apache.log4j.logger.getrootlogger () .信息('信息);

//基础可以自由交换log框架

FRLoggerFactory.getLogger () .信息('信息);

链接: cnblogs.com/x解码/p/9393885.html

练习项目源代码、新技术介绍、原理知识、应用框架知识点讲解、常见笔试试题分析、检索【Java知音】

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/26539.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。