100分求用c++举例说明下设计模式中的观察着模式和命令模式(最好能举个有代表性的的例子,不用很复杂,一个例子 50分)
如题
[解决办法]
这个我不懂
帮你顶一顶
[解决办法]
command最经典的就是画图程序的那个例子了。。
支持 do、 undo操作
[解决办法]
观察者模式 就是一个被观察者触发一个消息想让观察者调用某个方法。
[解决办法]
设计模式精解-GoF23种设计模式解析附C++实现
你下载一份这个文档看看
[解决办法]
百度||bing||google
[解决办法]
Observer.h
#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类派生自Observerclass ConcreateObserver : public Observer{public: ConcreateObserver() : Observer(){} virtual ~ConcreateObserver(){} // 虚函数,实现基类提供的接口 virtual void Update(Subject* pSubject);};#endif
[解决办法]
Main.cpp
#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,上边对这两个例子的实现一论再论,不能再详细了