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

做co的网站北京seo包年

做co的网站,北京seo包年,有做盆景的网站,有哪些免费做简历的网站文章目录 1 概念1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1 概念 责任链(Chain of Responsibility)是指将客户端请求处理的不同职责对象组成请求处理链。 客户端只需要将请求交付到该链上,而不需要关心链上含有哪些对象。请求…

文章目录

  • 1 概念
    • 1.1 角色
    • 1.2 类图
  • 2. 代码示例
    • 2.1 设计
    • 2.2 代码
    • 2.3 类图

1 概念

责任链(Chain of Responsibility)是指将客户端请求处理的不同职责对象组成请求处理链。

客户端只需要将请求交付到该链上,而不需要关心链上含有哪些对象。请求处理链上的对象收到请求后,执行自身业务职责,并将该请求传递到下一个链节点。由于客户端不需要了解责任链上节点对象的具体类型,大大降低了客户端与请求处理对象之间的耦合度。

1.1 角色

抽象处理者(Handler):包含抽象处理方法和一个后续处理者。
具体处理者(ConcreteHandler):实现抽象处理者的处理方法。
请求发送者(Client):向处理者发送请求。

1.2 类图

Client
Handler
#successor:Handler
+handleRequest(request:Request)
ConcreteHandlerA
+handleRequest(request:Request)
ConcreteHandlerB
+handleRequest(request:Request)

2. 代码示例

2.1 设计

  • 定义一个抽象处理者Handler
  • 定义实际处理者ConcreteHandlerAConcreteHandlerB
    • 它们实现了抽象处理者Handler
    • 它继承了另一个处理者(下一个处理者)
    • 它的Option()方法执行它的责任
    • 它的handleRequest()方法组装责任链并执行它的责任
  • 调用
    • 实例化三个实际处理者
    • 使用handleRequest()方法执行责任链

2.2 代码

package mainimport ("fmt"
)// 定义抽象处理者
type Handler interface {handleRequest() string
}// 定义实际处理者A
type ConcreteHandlerA struct {name stringnext Handler
}
//定义一个方法模拟实际处理者A的处理过程
func (c *ConcreteHandlerA) Option() {fmt.Println("执行:" + c.name)
}
//定义一个方法,完成它的处理后,交给下一个实际处理者
func (c *ConcreteHandlerA) handleRequest() string {c.Option()if c.next != nil {return c.next.handleRequest()}return ""
}// 定义实际处理者B(情况和A相同)
type ConcreteHandlerB struct {name stringnext Handler
}func (c *ConcreteHandlerB) Option() {fmt.Println("执行:" + c.name)
}func (c *ConcreteHandlerB) handleRequest() string {c.Option()if c.next != nil {return c.next.handleRequest()}return ""
}//定义一个函数,生产处理者
func NewHandler(name string, next Handler, kind string) (handler Handler, err error) {switch kind {case "A":handler = &ConcreteHandlerA{name: name,next: next,}return handler, nilcase "B":handler = &ConcreteHandlerB{name: name,next: next,}return handler, nildefault:return nil, err}}func main() {//实例化3个实际处理者handlerA1, _ := NewHandler("handlerA1", nil, "A")handlerA2, _ := NewHandler("handlerA2", handlerA1, "A")handlerB1, _ := NewHandler("handlerB1", handlerA2, "B")//使用handleRequest方法依次处理(处理过程我们不可见,但是可以通断点过调试看到)r := handlerB1.handleRequest()fmt.Println(r)
}
  • 执行结果
执行:handlerB1
执行:handlerA2
执行:handlerA1

2.3 类图

Client
«interface»
Handler
+handleRequest() : string
ConcreteHandlerA
+name:string
+next:Handler
+handleRequest() : string
+Option()
ConcreteHandlerB
+name:string
+next:Handler
+handleRequest() : string
+Option()

在这里插入图片描述

http://www.dt0577.cn/news/53845.html

相关文章:

  • 免费wordpress网站模板东莞网络推广哪家公司奿
  • 沈阳设计培训网站建设免费加客源软件
  • 网站建设销售信营销型网站案例
  • 创意工作室网站阿里云域名查询
  • 网页设计与网站建设在线考试视频号链接怎么获取
  • 阿里云做网站号码seo优化总结
  • 商业网站的建设太原seo建站
  • 长春网站策划目前较好的crm系统
  • 做的精美的门户网站推荐浙江企业seo推广
  • 网站编辑器是怎么做的网页设计首页制作
  • 南昌网站建设 南昌做网站公司深圳网络推广方法
  • 咋做网站代码背景图中国关键词官网
  • 广州百度seo代理seo关键词优化怎么收费
  • 网站开发流程 文档个人免费开发app
  • 娱乐城网站模板青岛网站制作
  • 免费建站cms国内最新新闻摘抄
  • 织梦网站变成手机站公司怎么在百度上推广
  • 网站维护客户如何做一个营销方案
  • 济南网站建设多少钱搜索引擎营销的方式
  • wordpress不能创建怎么解决方法seo标题生成器
  • 信息企业网站建设的优势短视频seo代理
  • 建设动态网站常见的问题站内推广和站外推广的区别
  • hanchengkeji杭州网站建设哈尔滨网站建设
  • 香港特别行政区区徽长沙靠谱的关键词优化
  • 突泉建设局三务公开网站企业网站网页设计
  • 专做农产品的网站收录优美的图片
  • 做网站维护工商经营范围是什么百度店铺怎么入驻
  • 东莞建设网站公司简介网站查询ip地址
  • 网站内容品质网络营销过程步骤
  • 专业的网站开发联系方式网络营销网站建设案例