不懂具体出一个java代码讲解
时间: 2024-03-25 20:40:04 浏览: 60
具体的例子讲解java
好的,下面是一个简单的 Java 代码示例,它演示了如何使用依赖倒置原则:
```java
public interface Database { // 定义数据库接口
void connect(); // 连接数据库
void disconnect(); // 断开数据库
}
public class MySQLDatabase implements Database { // 实现 MySQL 数据库
@Override
public void connect() {
System.out.println("连接 MySQL 数据库...");
}
@Override
public void disconnect() {
System.out.println("断开 MySQL 数据库...");
}
}
public class OracleDatabase implements Database { // 实现 Oracle 数据库
@Override
public void connect() {
System.out.println("连接 Oracle 数据库...");
}
@Override
public void disconnect() {
System.out.println("断开 Oracle 数据库...");
}
}
public class UserManager { // 用户管理类
private Database database; // 依赖于抽象
public UserManager(Database database) { // 通过构造函数注入依赖
this.database = database;
}
public void addUser(String userName, String password) {
database.connect(); // 连接数据库
System.out.println("向数据库中添加用户 " + userName + " ...");
database.disconnect(); // 断开数据库
}
}
public class Client { // 客户端测试类
public static void main(String[] args) {
Database database = new MySQLDatabase(); // 实例化 MySQL 数据库
UserManager userManager = new UserManager(database); // 实例化用户管理对象,注入依赖
userManager.addUser("John", "123456"); // 添加用户
}
}
```
在上面的代码中,我们定义了一个 `Database` 接口,它包含了连接和断开数据库的方法。然后我们分别实现了 `MySQLDatabase` 和 `OracleDatabase`,它们都实现了 `Database` 接口。
接下来,我们定义了一个 `UserManager` 类,它依赖于 `Database` 接口,通过构造函数注入依赖。在 `UserManager` 的 `addUser` 方法中,我们先连接数据库,然后向数据库中添加用户,最后断开数据库。
最后,我们在客户端测试类 `Client` 中实例化了一个 `MySQLDatabase` 对象,并将其注入到 `UserManager` 中,然后调用 `addUser` 方法来添加用户。
通过这个例子,我们可以看到,高层模块 `UserManager` 只依赖于抽象 `Database`,而不直接依赖于底层模块 `MySQLDatabase` 或 `OracleDatabase`,从而实现了依赖倒置原则,提高了系统的灵活性和可扩展性。
阅读全文