zoukankan      html  css  js  c++  java
  • 设计模式复习-职责链模式

    #pragma once
    #include "stdafx.h"
    #include<set>
    #include<string>
    #include<iostream>
    using namespace std;
    
    /*
    	设计模式-职责链模式(Chain of Responsibility)
    	使多个对象都有机会处理请求,从而避免请求的开发者和接受者之间的耦合关系。
    将这个对象连成一条链,并沿着这条链传递请求,直到有一个对象处理他为止。
    */
    
    class CHandler {//定义一个处理请求的接口
    protected:
    	CHandler *mpSuccessor;
    public:
    	CHandler() {mpSuccessor = NULL;}
    	void SetSuccessor(CHandler *pSuccessor) {
    		mpSuccessor = pSuccessor;
    	}
    	virtual void HandlerRequest(const int &nRequest) = 0;
    };
    
    class CConcreteHandler1 : public CHandler {//处理0-10之间的事物
    public:
    	void HandlerRequest(const int &nRequest) {
    		if (nRequest >= 0 && nRequest < 10) {
    			cout << "CConcreteHandler1:" << nRequest << endl;
    		}
    		else if (mpSuccessor != NULL) {
    			mpSuccessor->HandlerRequest(nRequest);
    		}
    	}
    };
    
    class CConcreteHandler2 : public CHandler {//处理10以上的事物
    public:
    	void HandlerRequest(const int &nRequest) {
    		if (nRequest >= 10) {
    			cout << "CConcreteHandler2:" << nRequest << endl;
    		}
    		else if (mpSuccessor != NULL) {
    			mpSuccessor->HandlerRequest(nRequest);
    		}
    	}
    };
    
    
    int main() {
    
    	CHandler *pH1 = new CConcreteHandler1();
    	CHandler *pH2 = new CConcreteHandler2();
    	pH1->SetSuccessor(pH2);
    	for (int index = 0; index <= 15; index++) {
    		pH1->HandlerRequest(index);
    	}
    	getchar();
    	return 0;
    }

  • 相关阅读:
    usb 安装系统
    跨站请求伪造攻击的基本原理与防范
    解决hexo神烦的DTraceProviderBindings MODULE_NOT_FOUND
    我知道
    MAC 重置MySQL root 密码
    线性变换与独立观察的期望和方差
    最小二乘法
    卡方检验中自由度的计算
    关于置信水平,求区间的简便算法
    独立观察与线性变换方差 均值计算
  • 原文地址:https://www.cnblogs.com/csnd/p/12061907.html
Copyright © 2011-2022 走看看