当前位置: 首页 > news >正文

网站用户体验度html网页制作代码大全免费

网站用户体验度,html网页制作代码大全免费,北京网站公司哪家好,微信公众号移动网站开发动机(Motivation) 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有个接受者,如果显示指定,将必不可少地带来请求者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受…

动机(Motivation)

在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有个接受者,如果显示指定,将必不可少地带来请求者与接受者的紧耦合。

如何使请求的发送者不需要指定具体的接受者?让请求的接受者自己在运行是决定来处理请求,从而两者解耦。

模式定义:

使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个请求处理他为止。

#include <iostream>
#include <string>using namespace std;enum class RequestType {REQ_HANDLER1,REQ_HANDLER2,REQ_HANDLER3,
};class Request {string description;RequestType reqType;
public:Request(const string& desc, RequestType type) : description(desc), reqType(type) {}RequestType getReqType() const { return reqType; }const string& getDescription() const { return description; }
};class ChainHandler {ChainHandler* nextChain;void sendRequestToNextHandler(const Request& req) {if (nullptr != nextChain) {nextChain->handle(req);}}
protected:virtual bool canHandleRequest(const Request& req) = 0;virtual void processRequest(const Request& req) = 0;
public:ChainHandler() { nextChain = nullptr; }void setNextChain(ChainHandler* next) { nextChain = next; }void handle(const Request& req) {if (canHandleRequest(req)) {processRequest(req);}else{sendRequestToNextHandler(req);}}
};class Handler1 : public ChainHandler {
protected:virtual bool canHandleRequest(const Request& req) override {return req.getReqType() == RequestType::REQ_HANDLER1;}virtual void processRequest(const Request& req) override {cout << "Handler1 is handle request: " << req.getDescription() << endl;}
};class Handler2 : public ChainHandler {
protected:virtual bool canHandleRequest(const Request& req) override {return req.getReqType() == RequestType::REQ_HANDLER2;}virtual void processRequest(const Request& req) override {cout << "Handler2 is handle request: " << req.getDescription() << endl;}
};class Handler3 : public ChainHandler {
protected:virtual bool canHandleRequest(const Request& req) override {return req.getReqType() == RequestType::REQ_HANDLER3;}virtual void processRequest(const Request& req) override {cout << "Handler3 is handle request: " << req.getDescription() << endl;}
};int main() {Handler1 h1;Handler1 h2;Handler1 h3;h1.setNextChain(&h2);h2.setNextChain(&h3);Request req("process task ...", RequestType::REQ_HANDLER3);h1.handle(req);return 0;
}

要点总结:

Chain of Responsibility模式的应用场合在于“一个请求可能有多个接受者,但是最后真正的接受者只有一个“,这时候请求发送者与接受者的耦合有可能出现”变化脆弱“的症状,指责链的目的就是将两者解耦,从而更好地应对变化。

应用了Chain of Responsibility模式后,对象的职责分派将更具灵活性。我们可以在运行时动态增加/修改请求的处理职责。

如果请求传递到职责链的末尾乃得不到处理,应该有一个合理的缺省机制。这也使每一个接受对象的职责,而不是发出请求的对象的职责。

http://www.yayakq.cn/news/882843/

相关文章:

  • 建设网站的网站是什么合肥网站建设 卫来科技
  • 自己如何开网站文库网站建设
  • php大型网站开发江门网站优化排名
  • 做淘宝还有必要做网站吗地方网站商城怎么做
  • 金融机构网站建设费用手机免费app开发制作平台
  • 南通网站建设技术支持2020全国封城时间表
  • 营销型网站建设大千建站在哪个网站可以查做项目中标的
  • 响应式网站设计尺寸大连网站建设介绍
  • 网站建站东莞软件开发属于什么行业类别
  • 简述建站流程软件开发流程解读
  • 重庆江津做网站济宁商城网站建设
  • 张家口网站网站建设广告游戏
  • 石家庄的网站建设公司哪家好初创公司网站设计苏州
  • 制作网站需要的技术与软件软件设计说明书
  • 网站优化费用怎么做会计分录免费下载ppt课件软件
  • 深圳手机医疗网站建设免费网站空间 推荐
  • 传统网站建设团队网站解析什么意思
  • 网站前端切图做多个页面中国3.15诚信建设联盟网站
  • 网站开发介绍ppt凡科建站是放在哪个服务器上
  • net淘宝网站开发的例子网站功能设计方案
  • 外国ps修图网站wordpress装修公司模板
  • 网站如何做邮箱订阅做下载网站挣钱吗
  • 保健品网站建设案例沙井网站优化
  • 深圳苏州旅游网站建设服务网站建设优化服务特色
  • 网站开发程序是什么发布新闻稿
  • 做面膜的网站报班学网站开发价格
  • 数据库电影网站源码seo全网推广营销软件
  • 电子商务网站建设与管理王生春做外汇网站卖判刑多少年
  • 上海大学生做网站的团队美容手机网站模板
  • 河南省住房和城乡建设厅门户网站htm网站