Java/C++实现模板方法模式---数据库操作

对数据库的操作一般包括连接、打开、使用、关闭等步骤,在数据库操作模板类中我们定义了connDB()、openDB()、useDB()、closeDB()四个方法分别对应这四个步骤。对于不同类型的数据库(如SQL Server和Oracle),其操作步骤都一致,只是连接数据库connDB()方法不同,现使用模板方法模式对其进行设计。

类图:

 

 Java代码:

复制代码
public abstract class DBOperator {
    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();
    }
}

public class OracleDBOperator extends DBOperator{

    @Override
    public void connDB() {
        // TODO Auto-generated method stub
        System.out.println("连接Oracle数据库");
    }

}


public class SQLServerDBOperator extends DBOperator{

    @Override
    public void connDB() {
        // TODO Auto-generated method stub
        System.out.println("连接SQLServer数据库");
    }
    
}

public class Client {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        DBOperator db;
        db=new OracleDBOperator();
        db.process();
        System.out.println("-----------------");
        db=new SQLServerDBOperator();
        db.process();
    }

}
复制代码

C++代码:

复制代码
#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() {
        this->connDB();
        this->openDB();
        this->useDB();
        this->closeDB();
    }
};
class OracleDBOperator: public DBOperator{
public:
    void connDB() {
        cout<<"连接Oracle数据库"<<endl;
    }
};
class SQLServerDBOperator:public DBOperator{
public:
    void connDB() {
        cout<<"连接SQLServer数据库"<<endl;
    }

};
int main(){
    DBOperator *db;
    db=new OracleDBOperator();
    db->process();
    cout<<"-----------------"<<endl;
    db=new SQLServerDBOperator();
    db->process();
}
复制代码

运行结果:

 

 

posted @   睡觉不困  阅读(275)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示