Composite模式

Composite模式

让客户可以统一处理单个对象和对象组合。 复合模式可以代表两种情况。 在这种模式下,可以开发用于表示部分 - 整体层次结构的树结构。在该例子中,Composite 模式可以处理Ellipse和Ellipse的组合,及graphicComposiote.

#include 
#include 
#include 
#include 
using namespace std;

class Graphic
{
public:
    virtual void print() const = 0;
    virtual ~Graphic(){};
};

class Ellipse:public Graphic
{
public:
    void print() const
    {
        cout<<"Ellipse \n"<print();
    }
  }

    void add(Graphic *aGraphic)
    {
        graphicList_.push_back(aGraphic);
    }
private:
    vector  graphicList_;
};

int main()
{
    // Initialize four ellipses
  const auto_ptr ellipse1(new Ellipse());
  const auto_ptr ellipse2(new Ellipse());
  const auto_ptr ellipse3(new Ellipse());
  const auto_ptr ellipse4(new Ellipse());

  // Initialize three composite graphics
  const auto_ptr graphic(new CompositeGraphic());
  const auto_ptr graphic1(new CompositeGraphic());
  const auto_ptr graphic2(new CompositeGraphic());

  // Composes the graphics
  graphic1->add(ellipse1.get());
  graphic1->add(ellipse2.get());
  graphic1->add(ellipse3.get());

  graphic2->add(ellipse4.get());

  graphic->add(graphic1.get());
  graphic->add(graphic2.get());

  // Prints the complete graphic (four times the string "Ellipse")
  graphic->print();
  return 0;
}


你可能感兴趣的:(Composite模式)