介绍
责任链模式就是多个对象都可以处理同一个请求,从高层往低层走,直到有对象处理该任务为止。
实现
这里以MFC的多文档或单文档的命令流向为原型,实现命令的响应过程。
C++
首先创建窗口类:
#ifndef _WINDOW_H_
#define _WINDOW_H_
class Window {
public:
Window(Window* window, bool has_handle) : pWindow_(window), has_handle_(has_handle) {
}
virtual void onCommond() {
return pWindow_->onCommond();
}
protected:
bool hasHandle() const {
return has_handle_;
}
private:
Window *pWindow_;
bool has_handle_;
};
#endif //_WINDOW_H_
类包含它的后继,就是可以执行该命令的对象,以及是否处理该命令的标志。
接着定义最高层对话框:
#ifndef _DIALOG_H_
#define _DIALOG_H_
#include <stdio.h>
#include "Window.h"
class Dialog : public Window {
public:
Dialog(Window *parent, bool has_handle) : Wind