装饰者模式 C++实现
Beverage .h
class Beverage
{
public:
Beverage();
virtual ~Beverage();
char *description;
char *getDescription();
virtual double cost();
};
Beverage.cpp
#include "Beverage.h"
Beverage::Beverage()
{
description = "Unknown
Beverage";
}
Beverage::~Beverage()
{
}
char *Beverage::getDescription()
{
return description;
}
double Beverage::cost()
{
return 0;
}
#include<iostream>
using namespace std;
/*装饰者*/
class CondimentDecorator : public
Beverage
{
char *getDescription();
};
/*浓缩咖啡*/
class Espresso : public Beverage
{public:
Espresso()
{ description="Espresso"; }
double cost()
/*家常咖啡*/
class HouseBlend : public Beverage
{
public:
HouseBlend()
{
description="House Blend
Co-ee";
}
double cost()
{
return .89;
}
};
/*深培咖啡*/
class DarkRoast : public Beverage
{
public:
DarkRoast()
{
description="Dark Roast
Co-ee";
}
double cost()
{
return 1.09;
}
};
/*Decaf 咖啡*/
class Decaf : public Beverage
{
public:
Decaf()
{
description="Decaf Co-ee";
}
double cost()
{
return .19;
}
};