Redian新闻
>
图解高内聚与低耦合

图解高内聚与低耦合

公众号新闻


模块

模块就是从逻辑上将系统分解为更细微的部分, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决.

耦合主要描述模块之间的关系, 内聚主要描述模块内部. 模块的粒度可大可小, 可以是函数, 类, 功能块等等.

耦合

模块之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强, 模块独立性越差.

比如模块A直接操作了模块B中数据, 则视为强耦合, 若A只是通过数据与模块B交互, 则视为弱耦合.

独立的模块便于扩展, 维护, 写单元测试, 如果模块之间重重依赖, 会极大降低开发效率.

内聚

模块内部的元素, 关联性越强, 则内聚越高, 模块单一性更强. 一个模块应当尽可能独立完成某个功能,

如果有各种场景需要被引入到当前模块, 代码质量将变得非常脆弱, 这种情况建议拆分为多个模块.

低内聚的模块代码, 不管是维护, 扩展还是重构都相当麻烦, 难以下手.

接口设计原则

好的接口应当满足设计模式六大原则, 很多设计模式, 框架都是基于高内聚低耦合这个出发点的.

  1. 单一职责原则: 一个类只负责一个功能领域中的相应职责.
  2. 开闭原则: 一个软件实体应当对扩展开放,对修改关闭.
  3. 里氏代换原则: 所有引用基类(父类)的地方必须能透明地使用其子类的对象.
  4. 依赖倒转原则: 抽象不应该依赖于细节, 细节应当依赖于抽象. 换言之, 要针对接口编程, 而不是针对实现编程.
  5. 接口隔离原则: 使用多个专门的接口, 而不使用单一的总接口, 即客户端不应该依赖那些它不需要的接口.
  6. 迪米特法则: 一个软件实体应当尽可能少地与其他实体发生相互作用, 例如外观模式, 对外暴露统一接口.

举几个栗子

外观模式

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

桥接模式

JDBC中的把面向厂商的接口(Driver)和面向使用者的API(DriverManager)做了拆分隔离.

// 开发者只需要关注JDBC API, 无需关注不同数据库Driver接口实现
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, username, password);

适配器模式

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

需要抽出上层统一接口, 然后增加实现类, 对外暴露接口.

// 代码与log4j强耦合, 不推荐
org.apache.log4j.Logger.getRootLogger().info("info");
// 底层可以随意更换log框架
FRLoggerFactory.getLogger().info("info");

链接:https://www.cnblogs.com/xdecode/p/9393885.html

(版权归原作者所有,侵删)


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
趣店季报图解:营收1.6亿同比降58% 净利达4.9亿【图解】收藏!新冠防护必知的40个知识点永远怀念江泽民主席 陈 湃【图解】2025年,我市将形成怎样的新污染物治理体系?一图读懂《上海市新污染物治理行动工作方案》→【图解】我市出台《上海市信息通信行业加强集成创新持续优化营商环境二十条》分子间耦合能够显著增强单分子热电势Jay Alammar再发新作:超高质量图解Stable Diffusion,看完彻底搞懂「图像生成」原理超实用!抗原检测全流程图解来了【图解】推动电梯安全监管科学化、数字化、智能化,一图读懂最新《上海市电梯安全管理办法》【图解】总量不低于户籍老年人口1.5%,沪出台保基本养老机构(床位)管理办法突发!多伦多室内聚会连响数十枪:1人死亡!宾客仓皇逃命!骗子,撕开你的面纱习打破了中共建立的社会契约 —黄亚生图解600年战争史:我们生活在最和平的年代吗Jeff Dean万字总结出炉!图解谷歌2022年AIGC、LLM、CV三大领域成就!图解各种改地址 | 吐血整理搬家后需要修改地址的清单和攻略这个比“极简”“断舍离”更具现实意义的生活方式,却被很多人误解与低估——十二经筋高清图解,走向动画图,推荐收藏!松耦合式的权限控制设计,自定义权限表达式雲字源考名画欣赏:从“拾穗”到“罂粟花”兼顾素质教育和应试教育,推荐这套《DK图解中学生物学》从《神女劈观》到非遗技艺,游戏试图解读当代的“传统文化”超详超硬Jeff Dean万字总结火热出炉!图解谷歌2022年AIGC、LLM、CV三大领域成就一文轻松图解搞懂Elasticsearch原理!搜狐财报图解:年营收7.34亿美元 连续三年持续盈利【图解】一图读懂第五次全国经济普查→兼顾素质教育和应试教育,推荐这套《DK图解中学化学》挖到宝!这款免费的图解小词典,给被“羊羊羊”刷屏的你,带来一股清凉叮咚买菜季报图解:营收62亿同比增13% 净利过亿动图解读!新鲜出炉的上海市政府工作报告亮点逐个数Adv. Mater. Interfaces: 声场-磁场耦合作用下的亥姆霍兹共振与气泡生成技术冬天的美国中西部,这10张图解释的明明白白!最新!至少15个国家对中国入境实行检疫限制!图解出境核酸报告获取+附各国签证政策【图解】完成徐家汇体育公园整体改造,建成上海自行车馆……今年上海体育将有这些新进展,你最期待哪个?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。