我正在尝试使用中的装饰器设计模式c++。但是,如果没有抽象超类(核心和装饰类都从中继承),我将无法实现它。
我不明白为什么需要抽象超类。
我的工作装饰器示例:
#include <string>
#include <iostream>
using namespace std;
// abstract superclass
class Pizza
{
public:
virtual string GetDescription() = 0;
virtual int GetCost() = 0;
};
// base class that can be extended
class Margharita: public Pizza
{
private:
string description;
int cost;
public:
Margharita(string t, int c){description = t; cost = c;}
string GetDescription(){return(description);}
int GetCost(){return(cost);}
};
// decorator class that extends base class
class ExtraCheese: public Pizza
{
private:
Pizza* pizza;
public:
// constructor …Run Code Online (Sandbox Code Playgroud)