⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mediator.c

📁 Design Pattern C Source Code
💻 C
字号:
/**/#include "List.H"class MouseEvent;class Widget;/**/class DialogDirector {public:    virtual ~DialogDirector();    virtual void ShowDialog();    virtual void WidgetChanged(Widget*) = 0;/**/protected:    DialogDirector();    virtual void CreateWidgets() = 0;};/**/class Widget {public:    Widget(DialogDirector*);    virtual void Changed();    virtual void HandleMouse(MouseEvent& event);    // ...private:    DialogDirector* _director;};/**/void Widget::Changed () {    _director->WidgetChanged(this);}/**/class ListBox : public Widget {public:    ListBox(DialogDirector*);    virtual const char* GetSelection();    virtual void SetList(List<char*>* listItems);    virtual void HandleMouse(MouseEvent& event);    // ...};/**/class EntryField : public Widget {public:    EntryField(DialogDirector*);    virtual void SetText(const char* text);    virtual const char* GetText();    virtual void HandleMouse(MouseEvent& event);    // ...};/**/class Button : public Widget {public:    Button(DialogDirector*);    virtual void SetText(const char* text);    virtual void HandleMouse(MouseEvent& event);    // ...};/**/void Button::HandleMouse (MouseEvent& event) {    // ...    Changed();}/**/class FontDialogDirector : public DialogDirector {public:    FontDialogDirector();    virtual ~FontDialogDirector();    virtual void WidgetChanged(Widget*);/**/protected:    virtual void CreateWidgets();/**/private:    Button* _ok;    Button* _cancel;    ListBox* _fontList;    EntryField* _fontName;};/**/void FontDialogDirector::CreateWidgets () {    _ok = new Button(this);    _cancel = new Button(this);    _fontList = new ListBox(this);    _fontName = new EntryField(this);    // fill the listBox with the available font names    // assemble the widgets in the dialog}/**/void FontDialogDirector::WidgetChanged (    Widget* theChangedWidget) {    if (theChangedWidget == _fontList) {        _fontName->SetText(_fontList->GetSelection());/**/    } else if (theChangedWidget == _ok) {        // apply font change and dismiss dialog        // .../**/    } else if (theChangedWidget == _cancel) {        // dismiss dialog    }}/**/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -