C++设计模式4.中介者
中介者(Mediator) 中介者模式属于设计模式::行为模式的一种,特别的,属于行为对象模式。 行为模式涉及到算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述他们之间的通信模式(协作)。 行为模式分为两种: 行为类模式:使用继承机制在类间分配行为。 行为对象模式:使用对象复合而不是继承。 一言以蔽之 引入一个中间对象(中介),解决对象间的(双向)依赖,避免紧耦合(接口隔离)。 注:门面模式(Facade)解决系统间单向的依赖。 举例 /* * 窗口对话框的基类 */ class Director{ public: virtual ~Director(); virtual void WidgetChanged(Widget*) = 0; protected: Director(); virtual void CreateWidgets() = 0; } /* * 控件的基类 */ class Widget{ public: Widget(Director*); virtual void Changed(){ // 在这里调用Director的接口方法,Director的子类为窗口 _director->WidgetChanged(); } // 规范接口 virtual void HandleMouseEvent(MouseEvent& event); private: Director* _director; } class ListBox : public Widget{ public: ListBox(Director*); virtual const char* GetSelection(); virtual void SetList(List<char*>* listItems); virtual void HandleMouseEvent(MouseEvent& event) override{} } class EntryField : public Widget{ public: EntryField(Director*); virtual const char* GetText(); virtual void SetText(const char* text); virtual void HandleMouseEvent(MouseEvent& event) override {} } class Button : public Widget{ public: Button(Director*); virtual void SetText(const char* text); virtual void HandleMouseEvent(MouseEvent& event) override { // ....