返回顶部

一缕半夏微光

温柔半两,从容一生

导航

软件设计24|模式方法模式

一、Java版本

(1)效果如下:

(2)类图如下:

(3)工程目录如下:

(4)代码如下:

Client.java

 1 package template;
 2 
 3 public class Client {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         DBOperator dBOperator;
 8         // SQL Server
 9         System.out.println("----SQL Server----");
10         dBOperator = new SQLServerDBOperator();
11         dBOperator.process();
12         // Oracle
13         System.out.println("----Oracle----");
14         dBOperator = new OracleDBOperator();
15         dBOperator.process();
16     }
17 
18 }

DBOperator.java

 1 package template;
 2 
 3 public abstract class DBOperator {
 4     public void process() {
 5         connDB();
 6         openDB();
 7         useDB();
 8         closeDB();
 9     }
10 
11     public abstract void connDB();
12 
13     public void openDB() {
14         System.out.println("打开数据库");
15     }
16 
17     public void useDB() {
18         System.out.println("使用数据库");
19     }
20 
21     public void closeDB() {
22         System.out.println("关闭数据库");
23     }
24 }

OracleDBOperator.java

 1 package template;
 2 
 3 public class OracleDBOperator extends DBOperator {
 4 
 5     @Override
 6     public void connDB() {
 7         // TODO Auto-generated method stub
 8         System.out.println("连接Oracle数据库");
 9     }
10 
11 }

SQLServerDBOperator.java

 1 package template;
 2 
 3 public class SQLServerDBOperator extends DBOperator {
 4 
 5     @Override
 6     public void connDB() {
 7         // TODO Auto-generated method stub
 8         System.out.println("连接SQLServer数据库");
 9     }
10 
11 }

参考链接:设计模式-模板方法模式

二、C++版本

(1)效果如下:

(2)类图如下:

(3)代码如下:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 class DBOperator {
 5 public:
 6     void process() {
 7         connDB();
 8         openDB();
 9         useDB();
10         closeDB();
11     }
12     virtual void connDB() = 0;
13     void openDB() {
14         cout << "打开数据库" << endl;
15     }
16     void useDB() {
17         cout << "使用数据库" << endl;
18     }
19     void closeDB() {
20         cout << "关闭数据库" << endl;
21     }
22 };
23 
24 class OracleDBOperator: public DBOperator {
25 public:
26     void connDB() {
27         cout << "连接Oracle数据库" << endl;
28     }
29 };
30 
31 class SQLServerDBOperator : public DBOperator {
32 public:
33     void connDB() {
34         cout << "连接SQL Server数据库" << endl;
35     }
36 };
37 
38 int main() {
39     DBOperator* dBOperator;
40     cout << "----SQL Server----" << endl;
41     dBOperator = new SQLServerDBOperator();
42     dBOperator->process();
43     cout << "----Oracle----" << endl;
44     dBOperator = new OracleDBOperator();
45     dBOperator->process();
46 }

posted on 2021-11-29 21:21  一缕半夏微光  阅读(39)  评论(0编辑  收藏  举报