模板方法模式的实践


对数据库的操作一般包括连接、打开、使用、关闭等步骤,在数据库操作模板类中我们定义了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();

 }

相关