专栏首页阿林前端开发攻城狮责任链模式是一种行为型设计模式
原创

责任链模式是一种行为型设计模式

type department interface {

execute(*patient)

setNext(department)

}

medical.go

import "fmt"

type medical struct {

next department

}

func (m *medical) execute(p *patient) {

if p.medicineDone {

fmt.Println("Medicine already given to patient")

m.next.execute(p)

return

}

fmt.Println("Medical giving medicine to patient")

p.medicineDone = true

m.next.execute(p)

}

func (m *medical) setNext(next department) {

m.next = next

}

cashier.go

import "fmt"

type cashier struct {

next department

}

func (c *cashier) execute(p *patient) {

if p.paymentDone {

fmt.Println("Payment Done")

}

fmt.Println("Cashier getting money from patient patient")

c.next.execute(p)

}

func (c *cashier) setNext(next department) {

c.next = next

}

doctor.go

import "fmt"

type doctor struct {

next department

}

func (d *doctor) execute(p *patient) {

if p.doctorCheckUpDone {

fmt.Println("Doctor checkup already done")

d.next.execute(p)

return

}

fmt.Println("Doctor checking patient")

p.doctorCheckUpDone = true

d.next.execute(p)

}

func (d *doctor) setNext(next department) {

d.next = next

}

reception.go

import "fmt"

type reception struct {

next department

}

func (r *reception) execute(p *patient) {

if p.registrationDone {

fmt.Println("Patient registration already done")

r.next.execute(p)

return

}

fmt.Println("Reception registering patient")

p.registrationDone = true

r.next.execute(p)

}

func (r *reception) setNext(next department) {

r.next = next

}

patient.go

type patient struct {

name string

registrationDone bool

doctorCheckUpDone bool

medicineDone bool

paymentDone bool

}

  main.go

func main() {

medical := &medical{}

//Set next for cashier department

cashier := &cashier{}

cashier.setNext(medical)

//Set next for doctor department

doctor := &doctor{}

doctor.setNext(cashier)

//Set next for reception department

reception := &reception{}

reception.setNext(doctor)

patient := &patient{name: "abc"}

//Patient visiting

reception.execute(patient)

}

执行结果如下:

Reception registering patient

Doctor checking patient

Cashier getting money from patient patient

Medical giving medicine to patient

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

关注作者,阅读全部精彩内容

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 设计模式-行为型模式-责任链模式

    责任链模式核心在处理流,让对象在类之间流动,直到合适进行对象处理,并把下一个设置为空。

    mySoul
  • 设计模式行为型:责任链模式(ChainOfResponsibilityPattern)

    将请求发送者和请求接受者解耦,让请求的接受者形成链式操作,所有人都能够接受接受到请求,直到有人处理请求。

    码农架构
  • 设计模式 ☞ 行为型之责任链模式

    责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个...

    Demo_Null
  • 行为型设计模式:责任链模式以及mybatis中的责任链

    职责链模式定义是把一个请求传递给多个对象来处理,这些对象都放在一条链上,以实现发送和接受解耦。GoF的《设计模式》中英文定义如下:

    jinjunzhu
  • 【设计模式系列】行为型之责任链模式

    责任链模式,小编在自己项目迭代过程也参与了维护和设计实现;本篇博文主要针对该设计模型进行总结和实践; 简单举例日常生活或者工作中能够接触的责任链模式场景:采购...

    沁溪源
  • 行为型模式:责任链模式

    Avoid coupling the sender of a request to its receiver by giving more than one o...

    LieBrother
  • 行为型设计模式(1)——责任链模式(Chain of Responsibility)

    责任链模式(Chain of Responsibility)是设计模式的一种,属于行为型设计模式。

    Dabelv
  • 责任链模式 职责链模式 Chain of Responsibility Pattern 行为型 设计模式(十七)

    责任链模式中,每个对象通过持有对下家的引用而链接起来,形成一条链条,串联起来多个处理对象。

    noteless
  • 设计模式之职责链模式(行为型)

    介绍职责链模式之前先介绍一下行为型设计模式,因为按照GoF模式分类,职责链就是一种行为型设计模式。行为型设计模式就是主要表示类或者对象之间的关联关系,分为类行为...

    SmileNicky
  • 23种设计模式(六)-责任链设计模式

    说到责任链设计模式, 我们平时使用的也真是挺多的. 比如: 天天用的网关过滤器, 我们请假的审批流, 打游戏通关, 我们写代码常用的日志打印. 他们都使用了责任...

    用户7798898
  • 23种设计模式之责任链模式

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

    烟草的香味
  • 设计模式-责任链模式

    职责链模式(Chain of Responsibility):使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链...

    Anymarvel
  • 设计模式-责任链模式

    看下具体的代码: 先把抽象处理者写出来,他是一个抽象类或者接口,这里使用抽象类,每个处理者给一个名字 name 属性

    breezedancer
  • 设计模式-责任链模式

    cwl_java
  • 设计模式----责任链模式

    一个事件需要经过多个对象处理是一个挺常见的场景,譬如采购审批流程,请假流程,软件开发中的异常处理流程,web请求处理流程等各种各样的流程,可以考虑使用责任链模式...

    大忽悠爱学习
  • 【设计模式-责任链模式】

    【导读】当有问题需要请教时,咨询别人,当其处理不了的时候,就咨询另外一个人,直到有人能处理此问题。这个就是典型的责任链模式。

    Liusy
  • 设计模式~责任链模式

    责任链模式(Chain of Responsibility)是一种对象的行为模式。

    Vincent-yuan
  • 设计模式-责任链模式

    基本每个在职人员,都经历过请假的事情。正常情况下,请假需要经过上级部门领导审批,而公司有总经理、部门经理、组长 有的甚至更多职位。请假也分为很多种情况,比如,事...

    逍遥壮士
  • 设计模式-责任链模式

    责任链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条...

    码哥字节

扫码关注云+社区

领取腾讯云代金券