首页 > 其他分享 >策略模式

策略模式

时间:2023-12-18 10:46:22浏览次数:20  
标签:策略 travel TravelStrategy 模式 strategy void public coutsetStrategy

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

1. 提交源代码;

2.	#include<iostream>
3.	using namespace std;
4.	class TravelStrategy {
5.	public:
6.	    virtual void travel()=0;
7.	};
8.	class Person {
9.	private:
10.	    TravelStrategy *strategy;
11.	public:
12.	    void setStrategy(TravelStrategy *strategy) {
13.	        this->strategy=strategy;
14.	    }
15.	    void travel() {
16.	        this->strategy->travel();
17.	    }
18.	};
19.	class TrainStrategy : public TravelStrategy{
20.	public:
21.	    void travel() {
22.	        cout<<"乘火车旅游"<<endl;
23.	    }
24.	};
25.	class BicycleStrategy : public TravelStrategy{
26.	public:
27.	    void travel() {
28.	        cout<<"自行车游"<<endl;
29.	    }
30.	};
31.	class AirplaneStrategy: public TravelStrategy{
32.	public:
33.	    void travel() {
34.	        cout<<"乘坐飞机旅游"<<endl;
35.	    }
36.	};
37.	int main(){
38.	        cout<<"请选择旅游方式"<<endl;
39.	        Person *pr=new Person();
40.	        TravelStrategy *strategy=new TrainStrategy();
41.	        pr->setStrategy(strategy);
42.	        pr->travel();
43.	        cout<<"------------------------------"<<endl;
44.	        cout<<"请选择旅游方式"<<endl;
45.	        TravelStrategy *strategy2=new BicycleStrategy();
46.	        pr->setStrategy(strategy2);
47.	        pr->travel();
48.	        cout<<"------------------------------"<<endl;
49.	        cout<<"请选择旅游方式"<<endl;
50.	        TravelStrategy *strategy3=new AirplaneStrategy();
51.	        pr->setStrategy(strategy3);
52.	        pr->travel();
53.	}


标签:策略,travel,TravelStrategy,模式,strategy,void,public,coutsetStrategy
From: https://www.cnblogs.com/yzx-sir/p/17910502.html

相关文章

  • 备忘录模式
    备忘录模式,也叫快照模式,它可以在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态,以便在需要的时候恢复到原先保存的状态。常见的场景比如游戏进度日志,VMWare操作系统快照等,以备后续的恢复。备忘录模式有三个角色,一是源发器,二是对源发器状态进行记录的备忘......
  • 仲裁者模式
    仲裁者模式和中介者模式类似,但作用又有不同之处,仲裁者模式是对多个对象的管理协调,而中介者一般是一代一。仲裁者有两个角色,仲裁者和被仲裁者,使用场景比如winform模式,form就是仲裁者,各种控件就是被仲裁者,仲裁者负责协调管理。代码示例packagedesignMode.mediator;publicinter......
  • 设计模式(十七)中介者
    一、定义义一个对象来封装一系列的对象交互。中介者模式使各对象不需要显示地相互引用,从而使其耦合松散,而且可以让你相对独立地改变它们之间的交互。中介者模式又称为调停模式,它是一种对象说行为型模式。二、描述在中介者模式中,引入了用于协调其他对象/类之间的相互调用的中介......
  • 行为设计模式-策略模式的优缺点
    策略模式的作用就是把具体的算法实现从业务逻辑中剥离出来,成为一系列独立的算法类,使得他们可以相互替换。举个例子:平常生活中超时基本上都有活动,比如会员日全场9折,周年庆消费多少减多少,抽奖活动等等。那么如果将业务具体落实在代码上,是不是可以用多个条件判断来封装具体的业务逻辑,i......
  • java状态模式
    1定义一个接口2publicinterfaceState{3publicvoidhandle();4}567/**8*具体的状态角色(下单)9*CreatedbyAdministrator10*/11publicclassPlaceAnOrderimplementsState{12//具体化状态的行为13@Override14publ......
  • 23种设计模式——模板模式
    今天我们来学习23种设计模式中的模板模式。模板模式需要注意抽象类与具体子类之间的协作。它用到了虚函数的多态性技术以及“不用调用我,让我来调用你”的反向控制技术。概念:模板模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法......
  • 涉及到 List 集合的查询优化时,通常需要考虑集合的大小、查询的复杂度以及数据访问的模
    Java开发中,当涉及到List集合的查询优化时,通常需要考虑集合的大小、查询的复杂度以及数据访问的模式。以下是一些常见的优化技巧。使用StreamAPI进行并行查询StreamAPI可以很容易地并行化查询操作,这对于大规模数据集的查询非常有用。以下是一个并行查询的示例:importjava.ut......
  • 地方门户网站运营策略
    很多经营地方门户网的站长看了我写的《想赚钱的个人网站站长要回答的33个问题》后与我交流,有些站长谈到经营地方门户网维护费劲,推广吃力,盈利困难,我不能和大家一一沟通,就写下这篇“浅谈如何运营地方门户网”和大家交流一下自己的看法。首先,地方门户网站的站长要有“媒体”观念......
  • Python实现软件设计模式4:建造者模式
    特点建造者模式是一步一步构建一个复杂的对象,属于对象创建型模式将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示关注如何逐步地创建一个复杂的对象或产品,不同的创造者定义了不同的创建过程用户不需要知道内部的具体构造细节、只用指定复杂对象的类......
  • Python实现软件设计模式3:抽象工厂模式
    特点系统中除了有多种产品类型(产品等级结构,如果汁、方便面、矿泉水),还出现了多个品牌(产品族,或农夫山泉、娃哈哈、康师傅、统一等品牌几乎都有这些产品)在工厂方法模式中,只有一个产品等级结构一个抽象产品(父类)、多个具体产品(子类)形成一个产品等级结构产品族是指由同一个工厂生产......