软件设计-模板方法模式
数据库连接
对数据库的操作一般包括连接、打开、使用、关闭等步骤,在数据库操作模板类中我们定义了connDB()、openDB()、useDB()、closeDB()四个方法分别对应这四个步骤。对于不同类型的数据库(如SQL Server和Oracle),其操作步骤都一致,只是连接数据库connDB()方法不同,现使用模板方法模式对其进行设计。
类图
源代码
Java:
package rjsj.no24; public abstract class Operator { public abstract void connDB(); public void openDB(){ System.out.println("---打开数据库---"); } public void useDB(){ System.out.println("---使用数据库---"); } public void closeDB(){ System.out.println("---关闭数据库---"); } public void display(){ this.connDB(); this.openDB(); this.useDB(); this.closeDB(); } }
package rjsj.no24; public class Oracle extends Operator{ @Override public void connDB() { System.out.println("连接---Oracle---数据库"); } }
package rjsj.no24; public class SQLServer extends Operator{ @Override public void connDB() { System.out.println("连接---SQLServer---数据库"); } }
package rjsj.no24; public class Client { public static void main(String[] args) { Operator dbOperator; dbOperator = new SQLServer(); dbOperator.display(); System.out.println("**************************************************"); dbOperator = new Oracle(); dbOperator.display(); } }
C++
#include<iostream> using namespace std; class Operator { public: virtual void conn()=0; void open() { cout<<"打开数据库"<<endl; } void use() { cout<<"使用数据库"<<endl; } void close() { cout<<"关闭数据库"<<endl; } void display() { this->conn(); this->open(); this->use(); this->close(); } }; class Oracle: public Operator{ public: void conn() { cout<<"连接Oracle"<<endl; } }; class SQLServer:public Operator{ public: void conn() { cout<<"连接SQLServer"<<endl; } }; int main(){ Operator *db; db=new Oracle(); db->display(); cout<<"******************************"<<endl; db=new SQLServer(); db->display(); }
运行结果: