给出C++不遵循依赖倒置原则设计原则和遵循依赖倒置原则设计原则的代码对比,并提供详细注释
时间: 2024-05-14 15:14:09 浏览: 80
分析c++源代码 依赖分析
以下是不遵循依赖倒置原则的代码:
```java
public class User {
private MySQLDatabase mySQLDatabase; // 依赖具体实现类
public User() {
this.mySQLDatabase = new MySQLDatabase();
}
public void save() {
mySQLDatabase.saveData();
}
}
public class MySQLDatabase {
public void saveData() {
// 实现保存数据到MySQL数据库的逻辑
}
}
```
以上代码中,`User` 类依赖具体实现类 `MySQLDatabase`,这违反了依赖倒置原则。如果需要更换底层实现,`User` 类就必须修改代码。这样的设计对于代码的可维护性、可扩展性和可测试性都会造成不良影响。
以下是遵循依赖倒置原则的代码:
```java
public interface Database {
void saveData();
}
public class User {
private Database database; // 依赖抽象接口
public User(Database database) {
this.database = database;
}
public void save() {
database.saveData();
}
}
public class MySQLDatabase implements Database {
public void saveData() {
// 实现保存数据到MySQL数据库的逻辑
}
}
```
以上代码中,`User` 类依赖抽象接口 `Database`,而不依赖具体实现类。这样就可以轻松地更换底层实现,而不必修改 `User` 类的代码。这样的设计符合依赖倒置原则,可以提高代码的可维护性、可扩展性和可测试性。
阅读全文