使用简单工厂模式,数据库操作,举一个详细的例子
时间: 2023-11-12 15:21:01 浏览: 101
php 设计模式之 工厂模式
好的,下面我来举一个详细的例子,假设我们要使用简单工厂模式来创建MySQL数据库连接和命令对象,然后执行一个查询操作获取数据。
首先,我们需要定义一个接口IDatabase,表示数据库操作,如下所示:
```java
public interface IDatabase {
void openConnection();
void closeConnection();
ResultSet executeQuery(String sql);
}
```
上述代码中,我们定义了三个方法,分别用于打开数据库连接、关闭数据库连接和执行查询操作。其中,executeQuery方法返回一个ResultSet对象,用于获取查询结果集。
接下来,我们创建一个MySQLDatabase类,实现IDatabase接口,如下所示:
```java
public class MySQLDatabase implements IDatabase {
private Connection conn;
public MySQLDatabase(String url, String user, String password) {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
@Override
public void openConnection() {
try {
if (conn != null && !conn.isClosed()) {
return;
}
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void closeConnection() {
try {
if (conn != null && !conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public ResultSet executeQuery(String sql) {
ResultSet rs = null;
try {
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
}
```
上述代码中,我们创建了一个MySQLDatabase类,实现了IDatabase接口中定义的三个方法。在构造函数中,我们使用JDBC驱动程序来获取MySQL数据库连接。在openConnection方法中,我们使用getConnection方法获取连接对象,并在closeConnection方法中关闭连接对象。在executeQuery方法中,我们使用createStatement方法创建一个Statement对象,并使用它执行查询操作,最后返回查询结果集。
接下来,我们创建一个DatabaseFactory类,用于创建MySQLDatabase对象,如下所示:
```java
public class DatabaseFactory {
public static IDatabase createDatabase(String url, String user, String password) {
return new MySQLDatabase(url, user, password);
}
}
```
上述代码中,我们创建了一个DatabaseFactory类,其中包含一个静态方法createDatabase,用于创建MySQLDatabase对象。在方法中,我们直接返回一个MySQLDatabase对象。
最后,我们可以使用上述工厂类来创建MySQLDatabase对象,并执行查询操作,例如:
```java
IDatabase db = DatabaseFactory.createDatabase("jdbc:mysql://localhost:3306/test", "root", "123456");
db.openConnection();
ResultSet rs = db.executeQuery("select * from users");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("id: " + id + ", name: " + name + ", age: " + age);
}
db.closeConnection();
```
上述代码中,我们使用DatabaseFactory类创建一个MySQLDatabase对象,然后使用该对象执行查询操作,最后关闭数据库连接。这样,我们就成功地使用简单工厂模式来创建MySQL数据库连接和命令对象,并执行了一个查询操作获取数据。
阅读全文