ÓôúÂëºÍ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; } | |
![]() | ![]() |