低耦合概述

简介: 低耦合概述

低耦合

耦合指的两个系统(模块)联系紧密。共7种,除掉无直接耦合和高级语言不存在的内容耦合,共5种。耦合从低到高,分别是:数据耦合、标记耦合、控制耦合、外部耦合、公共耦合。


数据耦合两例

JiSuan(5, 3);


CGouMaiXinXi gouMai = new CGouMaiXinXi();


//...


JiSuan(gouMai);


标记耦合六例

参数是json字符串,如:{"价格":10,"数量":1}


参数为文件名,文件格式是调用方和被调用方约定的。


C#带参数的线程函数,函数的入口参数为object类型;C++的线程入口函数,参数为LPVOID。


调用Com。


halcon的HTuple


_variant_t和VARIANT


控制耦合

移动(方向)


外部耦合

共用一个静态成员变量或全局变量。


公共耦合

访问同一片内存区域。


内容耦合4例

Window2000和Window98,C语言可以直接操作显示内存指针,来改变控制台内容。至少有10%的几率会让操作系统崩溃。


hook技术用于监控软件。


破解软件、逆向工程。


游戏修改,外挂。


各种耦合优缺点



耦合名称

优缺点

数据耦合

如果结构发生变化,编译的时候,就能发现错误。

标记耦合

如果结构发生变化,运行时才能发现错误。

控制耦合

控制耦合,大幅降低可测试性。

外部耦合

不知道会有多少个模块访问,所以确定性弱。相对公共耦合,可以通过访问权限(public、private等)减少风险

公共耦合

不知道会有多少个模块访问,确定性弱。

公共耦合与标记耦合的区别:后者只会在参数、返回值使用共同资源。

耦合只是一方面,具体情况具体分析。比如:标记耦合大大增加了灵活性和互操作性,所以常常用于系统间通信。外部耦合,大大降低了代码量,非常适合于一些质量要求不高的小工具。公共耦合适合的性能要求高的模块,即使是性能要求高的系统,绝大部分模块的性能要求并不高。


相关文章
|
Java 关系型数据库 数据库连接
MyBatis Plus 解决大数据量查询慢问题
MyBatis Plus 解决大数据量查询慢问题
|
9月前
|
移动开发 前端开发 JavaScript
HTML5实现好看的博客网站模板源码
HTML5实现的精美博客网站模板,适用于个人博客、简历等多种场景。代码简洁规范,页面干净整洁,内置首页、列表、文章等通用模板,支持多种风格切换,兼容性强,易于扩展和修改,附带完整注释,适合初学者上手。提供源码下载及在线预览,方便直接使用或二次开发。
398 1
HTML5实现好看的博客网站模板源码
|
8月前
|
JSON 监控 物联网
WebSocket 调试全攻略:核心解析、工具选择与对比!
WebSocket 是一种全双工、实时交互的网络通信协议,适用于即时通信、实时数据流、多人协作、IoT 等场景。调试 WebSocket 时,工具应具备握手管理、实时消息收发、自定义 Header、消息大小告警、分组管理、多连接支持和断线重现等功能。主流调试工具如 Postman、ApiPost 和 ApiFox 各有优劣:Postman 界面友好适合基础调试;ApiPost 支持高级功能如消息分组和自动重连;ApiFox 则强化了多连接支持。选择工具时需根据具体需求和团队熟悉度决定。
|
Java Maven
【异常】java: Internal error in the mapping processor: java.lang.NullPointerException
【异常】java: Internal error in the mapping processor: java.lang.NullPointerException
1772 0
|
监控 安全 网络安全
|
SQL 关系型数据库 MySQL
mysql密码的初始化,修改与重置
【8月更文挑战第16天】在 MySQL 中,可通过特定步骤初始化、修改或重置密码: 1. **初始化密码**:适合首次安装或遗忘 root 密码。需先停用 MySQL 服务,以特殊模式启动(跳过权限表),登录后更新 root 用户密码,并重启服务。 2. **修改密码**:直接使用 `ALTER USER` SQL 语句或通过客户端工具如 MySQL Workbench 修改现有用户的密码。 3. **重置密码**:若遗忘密码且初始化方法不可行,则需停用服务、修改配置文件以允许无密码启动 MySQL,登录后更改密码,并恢复正常配置重启服务。
3906 2
|
消息中间件 NoSQL 固态存储
Spring boot集成plumelog日志系统
近几日闲来无事,工作摸鱼之时在码云上发现一个更加轻量级的分布式日志系统 PlumeLog ,就研究了一下,写了一个demo,做个记录
|
Linux Windows
Installing, this may take a few minutes...WslRegisterDistribution failed with error: 0x80370114Err
Installing, this may take a few minutes...WslRegisterDistribution failed with error: 0x80370114Err
3895 3
|
存储 设计模式 uml
C++备忘录模式实践:轻松实现撤销与恢复功能
C++备忘录模式实践:轻松实现撤销与恢复功能
320 0
|
SQL 关系型数据库 MySQL
Docker下Nacos持久化配置
在Docker环境下,实战将Nacos的所有数据从嵌入式数据库改为MySql存储
1042 1
Docker下Nacos持久化配置