试着写一个" Observer"图案

时间:2017-06-22 22:32:28

标签: c++ design-patterns

我是否正确实施了这种模式?我的例子的想法是有文档和应用程序(app执行观察者角色)。在开始时,每个文档都应附加观察者。此外,文件可以通过向观察者(申请)发出信号来关闭除他自己以外的所有文件。

要求 - 示例应使用事件模型。

class Application 
{
        std::vector<Document *> docs;
    public:
        void add_document(Document *doc)
        {
            docs.push_back(doc);
        }
    public slots:
        void close_non_active_docs_button_pressed(Document *active_doc)
        {
            for (auto idoc: this->docs)
            {
                if (idoc == active_doc)
                    continue;
                idoc->close();  
            }
        }
}


class Document
{
        Application *app;
    public:
        void attach_to_app(Application *app)
        {
                this->curr_app = app;
                app->add_document(this);
        }

        void close(){...};

    public signals:
        void close_non_active_docs_button_pressed(Document *active_doc);



    ...
        emit close_non_active_docs_button_pressed(this);
}
///CONNECT(...)

0 个答案:

没有答案