Можно ли сказать что этот код реализует паттерн Стратегия?

#include <iostream>
using namespace std;

class ISqlQuery
{
public:
    virtual void select() = 0;
    virtual void update() = 0;
    virtual void insert() = 0;
};


class MySql : public ISqlQuery
{
public:
    void select() override
    {
        cout << "mysql select" << endl;
    }

    void update() override
    {
        cout << "mysql update" << endl;
    }

    void insert() override
    {
        cout << "mysql insert" << endl;
    }
};

class Postgres : public ISqlQuery
{
public:
    void select() override
    {
        cout << "Postgres select" << endl;
    }

    void update() override
    {
        cout << "Postgres update" << endl;
    }

    void insert() override
    {
        cout << "Postgres insert" << endl;
    }
};


class Sql
{
public:
    Sql(ISqlQuery* sqlquery) : sqlQuery(sqlquery) {}
    Sql() : sqlQuery(nullptr) {}
    ~Sql() { delete sqlQuery; }

    void setSqlQuery(ISqlQuery* sqlquery)
    {
        delete sqlQuery;
        sqlQuery = sqlquery;
    }

    void select()
    {
        sqlQuery->select();
    }

    void update()
    {
        sqlQuery->update();
    }

    void insert()
    {
        sqlQuery->insert();
    }

private:
    ISqlQuery* sqlQuery;
};



int main()
{
    Sql sql;
    sql.select();
    sql.insert();
    sql.update();
    sql.setSqlQuery(new MySql);
    sql.select();
    sql.insert();
    sql.update();

    return 0;
}

Просто только начал учить паттерны, интересно правильно ли я понял тему


Ответы (0 шт):