小编use*_*581的帖子

为什么装饰器模式实现需要具有核心类的公共抽象超类?

我正在尝试使用中的装饰器设计模式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)

c++ design-patterns decorator

2
推荐指数
1
解决办法
64
查看次数

标签 统计

c++ ×1

decorator ×1

design-patterns ×1