职责链模式lua实现
2013-11-22 08:47
411 查看
--[[ 职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 应用: 1、有多个对象处理请求,到底怎么处理在运行时确定。 2、希望在不明确指定接收者的情况下,向多个对象中的一个提交请求。 3、可处理一个请求的对象集合应该被动态指定。 ]]-- Handler = {} function Handler:new(o) o = o or {} setmetatable(o,self) self.__index = self return o; end function Handler:SetSuccessor(s) self.successor = s end ConcreteHandler1 = Handler:new() function ConcreteHandler1:HandleRequest(r) if r <= 10 then print("Handler1处理了请求") elseif self.successor then self.successor:HandleRequest(r) end end ConcreteHandler2 = Handler:new() function ConcreteHandler2:HandleRequest(r) if r > 10 and r <= 20 then print("Handler2处理了请求") elseif self.successor then self.successor:HandleRequest(r) end end ConcreteHandler3 = Handler:new() function ConcreteHandler3:HandleRequest(r) if r > 20 then print("Handler3处理了请求") elseif self.successor then self.successor:HandleRequest(r) end end h1 = 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处理了请求
相关文章推荐
- 设计模式C++实现(14)——职责链模式
- 状态模式lua实现
- 设计模式C++实现(14)——职责链模式
- 职责链模式(Chain of Responsibility)的Java实现
- 组合模式lua实现
- 观察者模式--lua实现
- 设计模式C++实现(14)——职责链模式
- 设计模式之第13章-职责链模式(Java实现)
- C++设计模式实现--职责链(Chain of Responsibility)模式
- 利用LUA协程实现FUTURE模式
- 设计模式C++实现(14)——职责链模式
- 设计模式C++实现(14)——职责链模式
- 设计模式C++实现(14)——职责链模式
- 设计模式C++实现(14)——职责链模式
- 设计模式C++实现(14)——职责链模式
- 大话设计模式--职责连模式 Chain of Resposibility -- C++实现实例
- 23种设计模式之python实现--职责链模式
- 职责链模式(java实现)
- iOS应用设计模式开发中职责链(责任链)模式的实现解析
- 设计模式C++实现(14)——职责链模式