职责链模式lua实现
来源:互联网 发布:手机淘宝注册店铺步骤 编辑:程序博客网 时间:2024/06/04 18:43
--[[职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。应用:1、有多个对象处理请求,到底怎么处理在运行时确定。2、希望在不明确指定接收者的情况下,向多个对象中的一个提交请求。3、可处理一个请求的对象集合应该被动态指定。]]--Handler = {}function Handler:new(o)o = o or {}setmetatable(o,self)self.__index = selfreturn o;endfunction Handler:SetSuccessor(s)self.successor = sendConcreteHandler1 = Handler:new()function ConcreteHandler1:HandleRequest(r)if r <= 10 thenprint("Handler1处理了请求")elseif self.successor thenself.successor:HandleRequest(r)endendConcreteHandler2 = Handler:new()function ConcreteHandler2:HandleRequest(r)if r > 10 and r <= 20 thenprint("Handler2处理了请求")elseif self.successor thenself.successor:HandleRequest(r)endendConcreteHandler3 = Handler:new()function ConcreteHandler3:HandleRequest(r)if r > 20 thenprint("Handler3处理了请求")elseif self.successor thenself.successor:HandleRequest(r)endendh1 = ConcreteHandler1:new()h2 = ConcreteHandler2:new()h3 = ConcreteHandler3:new()h1:SetSuccessor(h2)h2:SetSuccessor(h3)print("*********************实例一***********************")h1:HandleRequest(25)h2:HandleRequest(5)h3:HandleRequest(15)print("*********************实例二***********************")h1:HandleRequest(25)h1:HandleRequest(5)h1:HandleRequest(15)--[[PS:当时"弄懂"了职责链模式后,不禁心里大骂:尼玛,这不就是状态模式吗?!后来细心地发现了其中的不同:状态模式:后一个状态的处理对象早已在类的内部设定好了。职责链模式:后一个请求的处理对象由客户端来设定。]]--
状态模式lua实现
输出结果:
*********************实例一***********************
Handler3处理了请求
*********************实例二***********************
Handler3处理了请求
Handler1处理了请求
Handler2处理了请求
- 职责链模式lua实现
- C++实现职责链模式
- 职责链模式----C++实现
- C++实现职责链模式
- 职责链模式(java实现)
- 设计模式C++实现--职责链模式
- 用职责链模式来实现计算器
- 职责链模式(C++实现)
- 职责链模式(C语言实现)
- 职责链模式(C++实现)
- 职责链模式实现机房上机
- 设计模式十六(职责链模式,python实现)
- 23种设计模式之python实现--职责链模式
- C++设计模式实现--职责链(Chain of Responsibility)模式
- 设计模式C++实现——职责链模式
- 设计模式C++实现二十:职责链模式
- scala实现设计模式之职责链模式
- 【机房重构】--职责链模式+策略模式 实现下机
- CRegKey::QueryValue连续读取注册表时读不出来值的解决办法
- D.K.的Android旅程--ArrayAdapter和ListActivity实现ListView
- 用c语言输入学生信息保存到文件中并读取文件内容
- next_permutation
- Sizeof与Strlen的区别与联系
- 职责链模式lua实现
- 执行环境和对象上下文
- 大数据平台与技术闲话
- android游戏物理引擎开发——碰撞检测(三)
- C++实现strcpy字符串拷贝函数
- 十三周——二进制转换
- g++使用valgrind检查内存泄露
- OpenSSL命令---ts
- linux下查看TCP端口所属进程/线程