软件设计 石家庄铁道大学信息学院
实验 24:模板方法模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解模板方法模式的动机,掌握该模式的结构;
2、能够利用模板方法模式解决实际问题。
[实验任务一]:数据库连接
对数据库的操作一般包括连接、打开、使用、关闭等步骤,在数据库操作模板类中我们定义了connDB()、openDB()、useDB()、closeDB()四个方法分别对应这四个步骤。对于不同类型的数据库(如SQL Server和Oracle),其操作步骤都一致,只是连接数据库connDB()方法不同,现使用模板方法模式对其进行设计。
实验要求:
1. 提交源代码;
2.注意编程规范。
package test24; import java.util.Scanner; public class Client { public static void main(String[] args) { DBOperator db = null; System.out.println("请选择:1、SQLServer 2、Oracle"); Scanner input=new Scanner(System.in); int i=input.nextInt(); if(i==1) { db=new SQLServerDB(); }else if(i==2) { db=new OracleDB(); } db.process(); } }
package test24; public abstract class DBOperator { public void process(){ connDB(); openDB(); useDB(); closeDB(); } public abstract void connDB(); public void openDB(){ System.out.println("打开数据库"); } public void useDB(){ System.out.println("使用数据库"); } public void closeDB(){ System.out.println("关闭数据库"); } }
package test24; public class OracleDB extends DBOperator{ @Override public void connDB() { // TODO 自动生成的方法存根 System.out.println("连接Oracle数据库"); } }
package test24; public class SQLServerDB extends DBOperator{ @Override public void connDB() { // TODO 自动生成的方法存根 System.out.println("连接SQLServer数据库"); } }
#include<iostream> using namespace std; //抽象类 class DBOperator{ public: virtual void connDB()=0; void openDB(){ cout<<"打开数据库"<<endl; } void useDB(){ cout<<"使用数据库"<<endl; } void closeDB(){ cout<<"关闭数据库"<<endl; } void process(){ connDB(); openDB(); useDB(); closeDB(); } }; //具体子类 class SQLServerDB:public DBOperator{ public: void connDB(){ cout<<"连接SQL Server数据库"<<endl; } }; //具体子类 class OracleDB:public DBOperator{ public: void connDB(){ cout<<"连接Oracle数据库"<<endl; } }; //测试函数 int main(){ int i; DBOperator *db=NULL; cout<<"请选择:1、SQL Server\t 2、Oracle"<<endl; cin>>i; if(i==1){ db=new SQLServerDB(); }else if(i==2){ db=new OracleDB(); }else{ cout<<"输入有误!"<<endl; } db->process(); delete db; }