策略模式(二)

复制代码
#include<iostream>
using namespace std;

class TravelStrategy{
public:
    virtual void travel()=0;
};

class AirplaneStrategy:public TravelStrategy{
public:
    void travel(){
        cout<<"乘坐飞机旅行"<<endl;
    }
};

class TrainStrategy:public TravelStrategy{
public:
    void travel(){
        cout<<"乘坐火车旅行"<<endl;
    }
};

class BicycleStrategy:public TravelStrategy{
public:
    void travel(){
        cout<<"骑自行车旅行"<<endl;
    }
};

class Person{
private:
    TravelStrategy *strategy;
public:
    void setStrategy(TravelStrategy *strategy){
        this->strategy=strategy;
    }
    void travel(){
        strategy->travel();
    }
};
//测试函数
int main(){
    Person *p=new Person();
    TravelStrategy *travel;
    cout<<"出行方式:"<<endl;
    cout<<"     1.飞机\n     2.火车\n     3.自行车"<<endl;
    cout<<"-------------------------------------"<<endl;
    cout<<"请选择您的旅游方式:"<<endl;
    int i;
    cin>>i;
    if(i==1){
        travel=new AirplaneStrategy();
    }else if(i==2){
        travel=new TrainStrategy();
    }else if(i==3){
        travel=new BicycleStrategy();
    }else{
        cout<<"输入有误!"<<endl;
    }
    p->setStrategy(travel);
    p->travel();
}
复制代码

 

posted @   今天又双叒叕在敲代码  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示