📄 decorator.c
字号:
/**/class VisualComponent;class Window { public: void SetContents (VisualComponent* contents);};/**/class VisualComponent {public: VisualComponent(); virtual void Draw(); virtual void Resize(); // ...};/**/class Decorator : public VisualComponent {public: Decorator(VisualComponent*);/**/ virtual void Draw(); virtual void Resize(); // ...private: VisualComponent* _component;};/**/void Decorator::Draw () { _component->Draw();}void Decorator::Resize () { _component->Resize();}/**/class BorderDecorator : public Decorator {public: BorderDecorator(VisualComponent*, int borderWidth); virtual void Draw();private: void DrawBorder(int);private: int _width;};/**/void BorderDecorator::Draw () { Decorator::Draw(); DrawBorder(_width);}/**/void Window::SetContents (VisualComponent* contents) { // ...}/**/class ScrollDecorator : public Decorator {public: ScrollDecorator(VisualComponent*);};class TextView : public VisualComponent {};main () {/**/Window* window = new Window;TextView* textView = new TextView;/**/window->SetContents(textView);/**/window->SetContents( new BorderDecorator( new ScrollDecorator(textView), 1 ));/**/}/**/class Stream { public: virtual void PutInt(int); virtual void PutString(const char*);};class StreamDecorator : public Stream { public: StreamDecorator(Stream*); private: Stream* _component;};class CompressingStream : public StreamDecorator { public: CompressingStream(Stream*);};class ASCII7Stream : public Stream { public: ASCII7Stream(Stream*);};class FileStream : public Stream { public: FileStream(const char*);};void dummy() {/**/Stream* aStream = new CompressingStream( new ASCII7Stream( new FileStream("aFileName") ));aStream->PutInt(12);aStream->PutString("aString");/**/}/**/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -