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(); }
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!