zoukankan      html  css  js  c++  java
  • 面向对象原则:高内聚低耦合

    实际上,大多数框架都替我们考虑了这些问题,这就是为什么我们在框架规范的要求下写出的代码更流畅(至少以前给我的感觉是这样),言归正传。

    高内聚、低耦合的定义:

    内聚:每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码。 
    耦合:模块与模块之间接口的复杂程度,模块之间联系越复杂耦合度越高,牵一发而动全身。 
    目的:使得模块的“可重用性”、“移植性”大大增强 
    通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低 

    对于函数来说:

    高内聚:尽可能类的每个成员方法只完成一件事(最大限度的聚合) 
    低耦合:减少类内部,一个成员方法调用另一个成员方法 

    对于类来说:

    高内聚低耦合:减少类内部,对其他类的调用

    对于功能块来说:

    高内聚低耦合:减少模块之间的交互复杂度(接口数量,参数数据)

    耦合的划分,它们之间的耦合度由高到低排列如下:

    (1) 内容耦合:一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。

    若在程序中出现下列情况之一,则说明两个模块之间发生了内容耦合:

    1. 一个模块直接访问另一个模块的内部数据。

    2. 一个模块不通过正常入口而直接转入到另一个模块的内部。

    3. 两个模块有一部分代码重叠(该部分代码具有一定的独立功能)。

    4. 一个模块有多个入口。

    内容耦合可能在汇编语言中出现。大多数高级语言都已设计成不允许出现内容耦合。这种耦合的耦合性最强,模块独立性最弱。

    (2) 公共耦合:一组模块都访问同一个全局数据结构,则称之为公共耦合。公共数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。如果模块只是向公共数据环境输入数据,或是只从公共数据环境取出数据,这属于比较松散的公共耦合;如果模块既向公共数据环境输入数据又从公共数据环境取出数据,这属于较紧密的公共耦合。

    耦合带来的问题:

    代码可维护性差、理解性差、新增功能模块繁琐。

    高内聚低耦合的优势:

    事实上,短期来看,并没有很明显的好处,甚至短期内会影响系统的开发进度,因为高内聚,低耦合的系统对开发设计人员提出了更高的要求。高内聚,低耦合的好处体现在系统持续发展的过程中,高内聚,低耦合的系统具有更好的重用性,维护性,扩展性,可以更高效的完成系统的维护开发,持续的支持业务的发展,而不会成为业务发展的障碍。

  • 相关阅读:
    基于flask的web微信
    Scrapy框架
    python爬虫之Selenium
    python爬虫之request and BeautifulSoup
    CMDB的四种模式
    Django之CURD插件2
    Django之CURD插件
    在代码中使用Autolayout – intrinsicContentSize和Content Hugging Priority
    iOS事件传递&响应者链条
    CAEmitterLayer 粒子发射Layer的相关属性
  • 原文地址:https://www.cnblogs.com/zenan/p/9959785.html
Copyright © 2011-2022 走看看