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