duck.h

来自「head first 设计模式中的策略模式的C++实现代码」· C头文件 代码 · 共 64 行

H
64
字号
#include<iostream>
using namespace std;

#include "QuackBehavior.h"
#include "FlyBehavior.h"

class Duck
{
public:
	QuackBehavior *quackBehavior;
	FlyBehavior *flyBehavior;

	Duck(){}

	void setFlyBehavior( FlyBehavior *fb)
	{
		flyBehavior = fb;
	}

	void setQuackBehavior( QuackBehavior *qb)
	{
		quackBehavior = qb;
	}

	void performQuack()
	{
		quackBehavior->quack();
	}

	void performFly()
	{
		flyBehavior->fly();
	}

	void swim()
	{
		cout<<"All duck float, even decoys!"<<endl;
	}
};


class MallarDuck: public Duck
{
public:
	MallarDuck()
	{
		quackBehavior = new Quack();
		flyBehavior = new FlyWithWings();
	}
};

class ModelDuck:public Duck
{
public:
	ModelDuck()
	{
		flyBehavior = new FlyNoWay();
	}

	void display()
	{
		cout<<"I'm a model duck!"<<endl;
	}
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?