zoukankan      html  css  js  c++  java
  • 策略模式——C++实现

    问题描述:

    旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。

    类图:

    C++源代码:

     

    #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();
    }
    

      

    运行结果:

     

     

  • 相关阅读:
    话说 SVN 与 Git 之间的区别
    CentOS 7 之安装 Oracle 11gR2
    @meda媒体查询
    为样式找到应用目标-CSS选择器
    JQuery和原生JavaScript实现网页定位导航特效
    CSS代码缩写
    认识CSS样式
    文档类型、DOCTYPE切换和浏览器模式
    MIME 参考手册
    微格式(microformat)
  • 原文地址:https://www.cnblogs.com/znjy/p/15565318.html
Copyright © 2011-2022 走看看