goback add

ÓôúÂëºÍUMLͼ»¯½âÉè¼ÆÄ£Ê½Ö®¡¶×°ÊÎģʽ¡·

3794 µã»÷¡¤0 »ØÌû
µÆ»ð»¥Áª
Â¥Ö÷

Õâ¸öģʽ¿´ÁËÁ½´Î£¬ÒòΪÎÒÓе㲻̫Àí½â£¬Æäʵµ½ÏÖÔÚÒ²²»Ì«Àí½â¡£


ͨ¹ýд´úÂ룬×ÔÎÒÀí½â¾ÍÊǰѶÔÏóÖØÐÂ×°ÊÎÁËÒ»±é¡£Í¨¹ý¼Ì³Ðͬһ¸ö»ùÀà¡£¶ø²»ÓÃÌí¼Ó¶îÍâµÄÀàÁË¡£¡£¡£¡£


ÉÏͼ°É


ͨ¹ýÐÞÊÎÀà´ïµ½ÎÒÃÇÏëÒªµÄЧ¹û¡£ÐÞÊÎÀàͨ³£³õʼ»¯ÁË»ùÀà¡£


[cpp]
// Decorator.cpp : ¶¨Òå¿ØÖÆÌ¨Ó¦ÓóÌÐòµÄÈë¿Úµã¡£
//************************************************************************/    
/* @filename    Decorator.cpp
@author       wallwind  
@createtime    2012/10/29 22:42
@function     ÃüÁîģʽ
@email      */    
/************************************************************************/    

#include "stdafx.h"
#include <iostream>

using namespace std;

class Widget
{
public:
   Widget(){}
   virtual ~Widget(){}

   virtual void show()=0;
};

class TextField:public Widget
{
public:
   TextField(int ix,int iy)
       :x(ix),y(iy)
   {

   }
   ~TextField(){}

   void show()
   {
       cout<<"x:"<<x<<endl;
       cout<<"y:"<<y<<endl;

   }
private:
   int x;
   int y;
};
class Decorator:public Widget
{
public:
   Decorator(Widget* widget)
       :m_widget(widget)
   {}
   virtual ~Decorator()
   {
       delete m_widget;
   }

   void show()
   {
       m_widget->show();
       cout<<"Decorator:show()"<<endl;
   }
private:
   Widget* m_widget;
};

class BorderDecorator :public Decorator
{
public:
   BorderDecorator(Widget* widget)
       :Decorator(widget)
   {

   }
   void show()
   {
       Decorator::show();
       cout<<"BorderDecorator:show()"<<endl;
   }
};

class ScrollDecorator :public Decorator
{
public:
   ScrollDecorator(Widget* widget)
       :Decorator(widget)
   {

   }

   void show()
   {
       Decorator::show();
       cout<<"ScrollDecorator:show()"<<endl;
   }
};


int _tmain(int argc, _TCHAR* argv[])
{

   Widget* twidget = new  TextField(2,3);
   Widget *sd = new ScrollDecorator(twidget);
   Widget *br = new BorderDecorator(twidget);

   sd->show();
   br->show();
   return 0;
}

ϲ»¶0 ÆÀ·Ö0