12.2
```mermaid
classDiagram
class DatabaseTemplate {
<<abstract>>
+final operateDatabase()
#abstract connDB()
+openDB()
+useDB()
+closeDB()
}
class SQLServerDatabase {
+connDB()
}
class OracleDatabase {
+connDB()
}
DatabaseTemplate <|-- SQLServerDatabase
DatabaseTemplate <|-- OracleDatabase
```
源码:
package Tutorial24;
abstract class DatabaseTemplate {
// 模板方法
public final void operateDatabase() {
connDB();
openDB();
useDB();
closeDB();
}
// 抽象方法:子类实现
protected abstract void connDB();
// 具体方法:各数据库通用
protected void openDB() {
System.out.println("Opening database connection...");
}
protected void useDB() {
System.out.println("Using database...");
}
protected void closeDB() {
System.out.println("Closing database connection...");
}
}
// SQL Server数据库操作类
class SQLServerDatabase extends DatabaseTemplate {
@Override
protected void connDB() {
System.out.println("Connecting to SQL Server database...");
}
}
// Oracle数据库操作类
class OracleDatabase extends DatabaseTemplate {
@Override
protected void connDB() {
System.out.println("Connecting to Oracle database...");
}
}
// 测试类
public class Main {
public static void main(String[] args) {
DatabaseTemplate sqlServerDB = new SQLServerDatabase();
sqlServerDB.operateDatabase();
System.out.println();
DatabaseTemplate oracleDB = new OracleDatabase();
oracleDB.operateDatabase();
}
}

浙公网安备 33010602011771号