2021/11/26

策略模式

c++

#include<iostream>
using namespace std;

// 出行策略
class ITransport
{
public:
    virtual ~ITransport() {}
    virtual void Run() = 0;
};

class Tourists
{
public:
    Tourists(ITransport *transport) {
        m_pTransport = transport;
    }

    void Travel() {
        if (nullptr != m_pTransport)
            m_pTransport->Run();
    }

private:
    ITransport *m_pTransport;
};

// 自行车
class Bike : public ITransport
{
public:
    void Run() override {
        std::cout << "By bike" << std::endl;
    }
};

// 汽车
class Car : public ITransport
{
public:
    void Run() override {
        std::cout << "By car" << std::endl;
    }
};

// 火车
class Train : public ITransport
{
public:
    void Run() override {
        std::cout << "By train" << std::endl;
    }
};





int main()
{
    ITransport *bike = new Bike();
    ITransport *car = new Car();
    ITransport *train = new Train();

    Tourists *zhangsan = new Tourists(bike);
    Tourists *lisi = new Tourists(car);
    Tourists *wangwu = new Tourists(train);

    zhangsan->Travel();
    lisi->Travel();
    wangwu->Travel();

    getchar();

    return 0;
}

原文地址:https://www.cnblogs.com/qiangini/p/15600664.html