zoukankan      html  css  js  c++  java
  • JAVA : 关于高内聚与低耦合

    高内聚与低耦合的概念说实话,对本人来说每次提起来总是有些模糊,下午看了一些博主的文章,感觉清晰了一些,在此记录一下个人的理解。

    首先感谢几位老哥的文章,如下:

    https://blog.csdn.net/qq_39521554/article/details/79489180 

    https://www.cnblogs.com/corvoh/p/5747856.html

    https://blog.csdn.net/kingscoming/article/details/78836229

    内聚:

    每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码。

    个人理解:

    关于内聚,本人觉得四个字“单一职责”,不管是方法(函数)、类,还是自定义的组件。

    比如某个类应该只做它本身做的是,也不应该做过多的事情。比如计算模块,该模块应该只是做计算的事情,而不应该与付款模块发生内容耦合或者说直接耦合之类,

    说实在点就是在计算模块中不应该有付款之类的代码存在,计算就应该只是做计算的事情,反之亦然。

    那么计算模块中应该有各种类,比如计算加减法的,计算平方的,计算平方根的(举个例子,可能实际工作中就是一个工具类)

    那么计算加减法的类中就只是计算加减法,包括到方法中去,加法就计算加法。如果要实现一个复杂的计算比如要加,然后计算平法,然后再减的逻辑,应该在主模块中进行调用。

    最终暴露给其他模块的接口不影响付款,具体算法是什么样的,是计算模块说了算,付款模块并不需要关注。

    在主模块中调用计算模块的接口,然后再调用付款模块的接口,那么它们只是有非直接耦合的关系。

    耦合:

    模块与模块之间接口的复杂程度,模块之间联系越复杂耦合度越高,牵一发而动全身。

    个人理解:

    内聚有耦合有着千丝万缕的关系,如果内聚度较高,那么耦合程度必然会有所降低,反之,内聚度低,耦合度响应的也会出现一定上升,但又不一定是必然的。

    比如有一个类同时既有计算又有付款,内聚松散,等于2个功能整合为一个功能。那么可以直接把付款类去掉了。

    然后主模块中关于计算付款只要调用这一个类中的函数即可,那么是不是整体的耦合度降低了?但是牺牲的是内聚性。

    总结:

    所有本人感觉,如果要达到高内聚,那么在敲代码之前,势必要多花一些时间研究模块的拆分,不管是横向的还是纵向的,

    以上大多都是个人理解,欢迎拍砖

    成灰之前,抓紧时间做点事!!
  • 相关阅读:
    Nginx简单认识
    Redis简单入门认识
    用户体验报告——脉脉
    zine结构图
    猫眼电影原型图
    关于共享单车的一点思考
    用户体验报告——网易严选
    Zine和石墨文档竞品分析
    用户体验报告——石墨文档
    集合框架2
  • 原文地址:https://www.cnblogs.com/jony-it/p/10821226.html
Copyright © 2011-2022 走看看