设计模式——模板方法模式
对数据库的操作一般包括连接、打开、使用、关闭等步骤,在数据库操作模板类中我们定义了connDB()、openDB()、useDB()、closeDB()四个方法分别对应这四个步骤。对于不同类型的数据库(如SQL Server和Oracle),其操作步骤都一致,只是连接数据库connDB()方法不同,现使用模板方法模式对其进行设计。
java实现
package template; public abstract class DBTemplate { public abstract void connDB(); public void openDB(){ System.out.println("打开数据库"); } public void useDB(){ System.out.println("使用数据库"); } public void closeDB(){ System.out.println("关闭数据库"); } public void process(){ this.connDB(); this.openDB(); this.useDB(); this.closeDB(); } }
package template; public class OracleDBOperator extends DBTemplate{ @Override public void connDB() { System.out.println("连接oracle"); } }
package template; public class SqlServerDBOperator extends DBTemplate{ @Override public void connDB() { System.out.println("连接sql server"); } }
package template; public class Client { public static void main(String[] args) { DBTemplate db1,db2; db1=new SqlServerDBOperator(); db1.process(); System.out.println("---------------"); db2=new OracleDBOperator(); db2.process(); } }
c++实现
#include<iostream> using namespace std; class DBTemplate{ public: virtual void connDB()=0; void openDB(){ cout<<"打开数据库"<<endl; } void useDB(){ cout<<"使用数据库"<<endl; } void closeDB(){ cout<<"关闭数据库"<<endl; } void process(){ this->connDB(); this->openDB(); this->useDB(); this->closeDB(); } }; class SqlServerDB:public DBTemplate{ public: void connDB(){ cout<<"连接sql server"<<endl; } }; class OracleDB:public DBTemplate{ public: void connDB(){ cout<<"连接oracle"<<endl; } }; int main() { DBTemplate *db1,*db2; db1=new SqlServerDB(); db1->process(); cout<<"-------------------"<<endl; db2=new OracleDB(); db2->process(); return 0; }