首页 > 其他分享 >设计模式——模板方法模式

设计模式——模板方法模式

时间:2022-11-25 17:00:03浏览次数:65  
标签:void System 模式 class DBTemplate connDB 设计模式 public 模板

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

 

 java实现

package template;

public abstract class DBTemplate {
    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();
    }
}
package template;

public class OracleDBOperator extends DBTemplate{
    @Override
    public void connDB() {
        System.out.println("连接oracle");
    }
}
package template;

public class SqlServerDBOperator extends DBTemplate{
    @Override
    public void connDB() {
        System.out.println("连接sql server");
    }
}
package template;

public class Client {
    public static void main(String[] args) {
        DBTemplate db1,db2;
        db1=new SqlServerDBOperator();
        db1.process();
        System.out.println("---------------");
        db2=new OracleDBOperator();
        db2.process();
    }
}

c++实现

#include<iostream>
using namespace std;
class DBTemplate{
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 SqlServerDB:public DBTemplate{
public:
    void connDB(){
        cout<<"连接sql server"<<endl;
    }
};
class OracleDB:public DBTemplate{
public:
    void connDB(){
        cout<<"连接oracle"<<endl;
    }
};
int main()
{
    DBTemplate *db1,*db2;
    db1=new SqlServerDB();
    db1->process();
    cout<<"-------------------"<<endl;
    db2=new OracleDB();
    db2->process();
    return 0;
}

 

标签:void,System,模式,class,DBTemplate,connDB,设计模式,public,模板
From: https://www.cnblogs.com/jzz-111jy/p/16925645.html

相关文章

  • 智慧驾培创新模式,vr模拟驾驶带你沉浸式练车
    随着生活水平的提高,越来越多人买得起车了,而想要开车上路,首先需要考取驾驶证。如今考取驾驶证的难度越来越大,而且很多驾校的练车次数非常有限,基本上只有3-5天的练习时间,就给......
  • 外观模式(Facade )
    就是封装!就是封装!就是封装!把一个很复杂的过程,包装成一个方法。调用的时候,只使用了一条语句,非常简介!非常美观! 比如:创建一个对象,只需要:new类名();它的内部......
  • 装饰模式(Decorator)
    给某个对象,动态新增功能。构成:1、抽象接口:真实对象与装饰对象实现同一个接口。2、装饰父类:持有一个真实对象的引用,即可为真实对象新增功能。3、真实对象:被扩展的对象。......
  • 【J2me3D系列学习文章之二】(立即模式)构造我们3D世界中的第一个立方体!
    Himi 原创,转载请注明!谢谢。   3D设计的里程碑。     首先介绍构造一个3D立方体需要的步骤:(大概步骤哦)    第一:构造一个立方体的空间顶点    ......
  • 设计模式
    单例模式:确保全局只有一个该类的实例预加载:占用内存,将类的实例化私有,在类中声明一个静态的实例。外部可以直接调用。懒加载:无需占用内存,将类的实例化私有,且在类中创建一......
  • 路由器有 4 种运行模式,
    如上图所示,路由器有4种运行模式,第一种运作模式为桥接(bridge)模式,此模式可用于扩大原有AP点的覆盖范围,延长无线通信距离,使用此模式时请关闭7628N路由器的DHCP。第二种......
  • 桥接模式(Bridge)
    一个类中有两个可以扩展的组件,需要扩展的时候会很麻烦,通过桥接接口,把其中一个组件独立出去。应用场景:一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。如果......
  • docker-compose之redis cluster模式
    一、docker容器化的rediscluster最难搞的就是网络问题,这边记录一下集群搭建过程。二、dockerfileFROMredis:5.0.14MAINTAINERxbdRUNln-sf/usr/share/zo......
  • vue2 使用Markfile 命令创建新增组件模板
    项目开发中封装了许多图表组件,每次新增组件或者组件迭代都要复制前后端的文件,为了避免重复操作,使用一键命令创建组件模板文件。效果如下:          ......
  • 【Linux】linux | CentOS7 | 命令行模式 | 图形化界面模式
    1、图形化界面->命令行1)键盘按键Ctrl+Alt+F32、命令行->图形化界面1)键入命令init5......