目录

坏代码:

示例:紧耦合的C++代码

耦合问题分析

对比:低耦合的改进思路(基于搜索结果中的设计原则)

c++设计模式

观察模式与发布订阅模式的关系及区别


坏代码:

以下是C++中体现高耦合的代码示例,高耦合意味着模块之间相互依赖紧密,一个模块的修改容易影响其他模块,违背了“低耦合”的设计原则。

示例:紧耦合的C++代码

假设有一个学生管理系统,其中Student类直接依赖于具体的数据库操作类MySQLDB,而不是抽象接口:


耦合问题分析

  1. 直接依赖具体实现Student类内部直接包含了MySQLDB的实例,并在其方法中调用MySQLDB的具体方法(如connectinsertStudent)。这意味着如果未来需要更换数据库(如从MySQL改为PostgreSQL),必须修改Student类的代码,违反了开闭原则3

  2. 职责不清Student类不仅负责学生信息的封装,还承担了数据库连接和数据持久化的职责,导致模块内聚性降低(高内聚要求模块内部元素围绕单一职责)1

  3. 难以测试和维护:由于StudentMySQLDB紧密绑定,在单元测试Student类时,必须依赖真实的数据库环境,增加了测试难度;同时,任何数据库逻辑的修改都可能影响Student类的稳定性3

对比:低耦合的改进思路(基于搜索结果中的设计原则)

若采用接口抽象和依赖注入,可降低耦合:

  • 定义数据库操作接口(如IDB),Student类依赖此接口而非具体实现;
  • 通过构造函数或 setter 注入具体数据库实例(如MySQLDBPostgreSQLDB)。

改进后的代码示例(简化):


此时,Student类与具体数据库实现解耦,符合“低耦合”原则,模块间的依赖通过抽象接口管理,提升了代码的可维护性和可扩展性[23]。

c++设计模式

观察模式与发布订阅模式的关系及区别

更多推荐