读书人

100分求用c++举例说明下设计模式中的观

发布时间: 2012-02-15 12:09:44 作者: rapoo

100分求用c++举例说明下设计模式中的观察着模式和命令模式(最好能举个有代表性的的例子,不用很复杂,一个例子 50分)
如题

[解决办法]
这个我不懂
帮你顶一顶
[解决办法]
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类派生自Observerclass 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,上边对这两个例子的实现一论再论,不能再详细了

读书人网 >C++

热点推荐