12.11
软件设计实验241.画出对应的类图;
2.提交源代码;
3.注意编程规范。
1.┌───────────────────────────────────┐
│ DatabaseTemplate │
├───────────────────────────────────┤
│ + operateDatabase(): void │
├───────────────────────────────────┤
│ # connDB(): void │
│ # openDB(): void │
│ # useDB(): void │
│ # closeDB(): void │
└───────────────┬───────────────────┘
△
│
┌───────────┴───────────┐
│ │
┌─────────────┐ ┌─────────────┐
│SQLServerDB │ │ OracleDB │
├─────────────┤ ├─────────────┤
│ │ │ │
└─────────────┘ └─────────────┘
2.源代码
// 抽象模板类:定义数据库操作的算法骨架
abstract class DatabaseTemplate {
// 模板方法:定义了数据库操作的固定流程(final防止子类修改算法结构)
public final void operateDatabase() {
connDB(); // 连接数据库
openDB(); // 打开数据库
useDB(); // 使用数据库
closeDB(); // 关闭数据库
}
// 抽象方法:连接数据库(由子类实现具体连接方式)
protected abstract void connDB();
// 具体方法:打开数据库(所有数据库通用的实现)
protected void openDB() {
System.out.println("打开数据库连接...");
}
// 具体方法:使用数据库(所有数据库通用的实现)
protected void useDB() {
System.out.println("使用数据库进行查询/更新操作...");
}
// 具体方法:关闭数据库(所有数据库通用的实现)
protected void closeDB() {
System.out.println("关闭数据库连接...");
}
}
// 具体子类:SQL Server数据库实现
class SQLServerDatabase extends DatabaseTemplate {
@Override
protected void connDB() {
System.out.println("使用SQL Server JDBC驱动连接数据库...");
System.out.println("连接到SQL Server服务器...");
System.out.println("SQL Server数据库连接成功!");
}
// 可以重写其他方法以提供SQL Server特定的实现
@Override
protected void useDB() {
System.out.println("执行T-SQL查询语句...");
System.out.println("使用存储过程...");
}
}
// 具体子类:Oracle数据库实现
class OracleDatabase extends DatabaseTemplate {
@Override
protected void connDB() {
System.out.println("使用Oracle JDBC驱动连接数据库...");
System.out.println("配置Oracle TNS连接...");
System.out.println("Oracle数据库连接成功!");
}
// 可以重写其他方法以提供Oracle特定的实现
@Override
protected void useDB() {
System.out.println("执行PL/SQL查询...");
System.out.println("使用Oracle序列和触发器...");
}
}
// 具体子类:MySQL数据库实现(扩展示例)
class MySQLDatabase extends DatabaseTemplate {
@Override
protected void connDB() {
System.out.println("使用MySQL Connector/J驱动连接数据库...");
System.out.println("设置MySQL字符集为UTF-8...");
System.out.println("MySQL数据库连接成功!");
}
}
// 客户端代码
public class TemplateMethodDemo {
public static void main(String[] args) {
System.out.println("========== SQL Server 数据库操作 ==========");
DatabaseTemplate sqlServerDB = new SQLServerDatabase();
sqlServerDB.operateDatabase();
System.out.println("\n========== Oracle 数据库操作 ==========");
DatabaseTemplate oracleDB = new OracleDatabase();
oracleDB.operateDatabase();
System.out.println("\n========== MySQL 数据库操作 ==========");
DatabaseTemplate mysqlDB = new MySQLDatabase();
mysqlDB.operateDatabase();
}
}

浙公网安备 33010602011771号