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

潍坊手机网站建设公司美容院网站源码

潍坊手机网站建设公司,美容院网站源码,硬件开发管理流程,婺源做微信网站动机#xff08;Motivation#xff09; 在软件构建过程中#xff0c;一个请求可能被多个对象处理#xff0c;但是每个请求在运行时只能有个接受者#xff0c;如果显示指定#xff0c;将必不可少地带来请求者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受…动机Motivation 在软件构建过程中一个请求可能被多个对象处理但是每个请求在运行时只能有个接受者如果显示指定将必不可少地带来请求者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受者让请求的接受者自己在运行是决定来处理请求从而两者解耦。 模式定义 使多个对象都有机会处理请求从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链并沿着这条链传递请求直到有一个请求处理他为止。 #include iostream #include stringusing 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.dnsts.com.cn/news/94537.html

相关文章:

  • 青岛网站建设维护宜兴百度推广公司
  • 做360网站中保存的图片存在哪里汕头市网站建设分站公司
  • 网站被挂黑链网站开发网站模板设计
  • 设计素材网站p开头的外贸网站建设推广方案
  • 本地的上海网站建设怎样自己建设网站
  • 茶庄网站模板贵阳网站设计找哪家
  • 做网站题材江苏网站seo设计
  • 网站开发如何实现数据库的链接免费网络课程
  • 网站开发的公司名称中国制造网注册网站免费注册
  • 鄞州区网站建设济南pc网站建设公司
  • 展览网站模板大全云平台网站优化
  • 做网站哪个部分杭州软件网站建设
  • 专做展厅设计网站中山网站建设文化教程
  • 空间网站打不开wordpress主题音乐
  • 营销手机网站制作东莞做网站优化的公司
  • 母了猜猜看游戏做网站当涂住房和城乡建设网站
  • 平顶山北京网站建设建立网站第一步
  • 怎么做百度里面自己的网站国外网站模板欣赏
  • 柳州网站建设33简述网络营销的定义
  • 专注高密做网站哪家好asp.net网站的404错误页面
  • 萧云建设网站公司网站素材
  • 五莲做网站免费论坛网站建设
  • 大连 响应式网站制作大连哪家公司做网站
  • 网站厨师短期培训班注册公司代理费用标准
  • 展示网站报价方案seo排名关键词点击
  • 免费学校网站模板21天网站建设实录
  • 企业网站建设好的案例网站被挂黑链怎么办
  • 涂鸦网站建设电子商务网站建设与管理第二版答案
  • 网站seo优化皆宣徐州百都网络不错微商怎么做自己的网站
  • 网页设计与网站建设 入门必练四川省建设人才网站