100分求用c++举例说明下设计模式中的观察着模式和命令模式(最好能举个有代表性的的例子,不用很复杂,一个例子 50分)解决办法
100分求用c++举例说明下设计模式中的观察着模式和命令模式(最好能举个有代表性的的例子,不用很复杂,一个例子 50分)
如题
------解决方案--------------------
这个我不懂
帮你顶一顶
------解决方案--------------------
command最经典的就是画图程序的那个例子了。。
支持 do、 undo操作
------解决方案--------------------
观察者模式 就是一个被观察者触发一个消息想让观察者调用某个方法。
------解决方案--------------------
设计模式精解-GoF23种设计模式解析附C++实现
你下载一份这个文档看看
------解决方案--------------------
百度||bing||google
------解决方案--------------------
Observer.h
如题
------解决方案--------------------
这个我不懂
帮你顶一顶
------解决方案--------------------
command最经典的就是画图程序的那个例子了。。
支持 do、 undo操作
------解决方案--------------------
观察者模式 就是一个被观察者触发一个消息想让观察者调用某个方法。
------解决方案--------------------
设计模式精解-GoF23种设计模式解析附C++实现
你下载一份这个文档看看
------解决方案--------------------
百度||bing||google
------解决方案--------------------
Observer.h
- C/C++ code
#ifndef OBSERVER_H #define OBSERVER_H #include <list> typedef int STATE; class Observer; // Subject抽象基类,只需要知道Observer基类的声明就可以了 class Subject { public: Subject() : m_nSubjectState(-1){} virtual ~Subject(); void Notify(); // 通知对象改变状态 void Attach(Observer *pObserver); // 新增对象 void Detach(Observer *pObserver); // 删除对象 // 虚函数,提供默认的实现,派生类可以自己实现来覆盖基类的实现 virtual void SetState(STATE nState); // 设置状态 virtual STATE GetState(); // 得到状态 protected: STATE m_nSubjectState; // 模拟保存Subject状态的变量 std::list<Observer*> m_ListObserver; // 保存Observer指针的链表 }; // Observer抽象基类 class Observer { public: Observer() : m_nObserverState(-1){} virtual ~Observer(){} // 纯虚函数,各个派生类可能有不同的实现 // 通知Observer状态发生了变化 virtual void Update(Subject* pSubject) = 0; protected: STATE m_nObserverState; // 模拟保存Observer状态的变量 }; // ConcreateSubject类,派生在Subject类 class ConcreateSubject : public Subject { public: ConcreateSubject() : Subject(){} virtual ~ConcreateSubject(){} // 派生类自己实现来覆盖基类的实现 virtual void SetState(STATE nState); // 设置状态 virtual STATE GetState(); // 得到状态 }; // ConcreateObserver类派生自Observer class ConcreateObserver : public Observer { public: ConcreateObserver() : Observer(){} virtual ~ConcreateObserver(){} // 虚函数,实现基类提供的接口 virtual void Update(Subject* pSubject); }; #endif
------解决方案--------------------
Main.cpp
- C/C++ code
#include "Observer.h" #include <iostream> int main() { Observer *p1 = new ConcreateObserver; Observer *p2 = new ConcreateObserver; Subject* p = new ConcreateSubject; p->Attach(p1); p->Attach(p2); p->SetState(4); p->Notify(); p->Detach(p1); p->SetState(10); p->Notify(); delete p; system("pause"); return 0; }
------解决方案--------------------
帮顶~~
------解决方案--------------------
Modern C++ Design,上边对这两个例子的实现一论再论,不能再详细了