java 利用接口的思想,定义Dbdriver驱动接口,通过该接口实现IBMdriver类、 Googledriver类,定义UserDriver 类来使用该驱动。编写该程序并实现不同的驱动输出不同的内容。
时间: 2024-10-21 20:05:16 浏览: 26
在Java中,利用接口(Interface)作为设计模式的一种,可以创建一种松耦合的关系,允许我们定义一系列的行为规范而不关心具体的实现细节。首先,我们可以定义一个名为`DbDriver`的接口,这个接口包含了一些基本的操作方法:
```java
public interface DbDriver {
void connect();
void executeQuery(String sql);
void disconnect();
}
```
然后,为了具体化这个接口,我们可以创建两个实现了这个接口的类:`IBMDriver`和`GoogleDriver`。
```java
public class IBMDriver implements DbDriver {
@Override
public void connect() {
System.out.println("Connecting to IBM database...");
}
@Override
public void executeQuery(String sql) {
System.out.println("Executing query on IBM: " + sql);
}
@Override
public void disconnect() {
System.out.println("Disconnecting from IBM database...");
}
}
public class GoogleDriver implements DbDriver {
@Override
public void connect() {
System.out.println("Connecting to Google Cloud Spanner...");
}
@Override
public void executeQuery(String sql) {
System.out.println("Executing query on Google Cloud: " + sql);
}
@Override
public void disconnect() {
System.out.println("Disconnecting from Google Cloud...");
}
}
```
接着,我们定义一个`UserDriver`类,它使用泛型来持有任意类型的`DbDriver`实例,并调用其方法:
```java
public class UserDriver<T extends DbDriver> {
private T driver;
public UserDriver(T driver) {
this.driver = driver;
}
public void performTask() {
driver.connect();
String sql = "Some SQL statement";
driver.executeQuery(sql);
driver.disconnect();
}
}
```
现在,我们可以创建`UserDriver`实例,并传入对应的数据库驱动:
```java
public static void main(String[] args) {
UserDriver<IBMDriver> ibmDriver = new UserDriver<>(new IBMDriver());
ibmDriver.performTask();
UserDriver<GoogleDriver> googleDriver = new UserDriver<>(new GoogleDriver());
googleDriver.performTask();
// 输出:
// Connecting to IBM database...
// Executing query on IBM: Some SQL statement
// Disconnecting from IBM database...
// Connecting to Google Cloud Spanner...
// Executing query on Google Cloud: Some SQL statement
// Disconnecting from Google Cloud...
}
```
这个例子展示了如何利用接口实现多态,使得不同的数据库驱动可以在不修改`UserDriver`的情况下替换,提供不同的操作效果。
阅读全文