责任链模式是适用于流程样式过程,比如流水线,OA审批过程
优点:各司其职,便于扩展
缺点:每一次必须走流程,按照步骤走
我们使用责任链来解决一个货币找零问题——要求找零是张数最少
描述:将一定数量的金额兑换出张数最少的纸币(目前币种有 100,50 ,20,10, , 1,, 0.1)
比如:102= 100 * 1 + 1*2 125 = 100 *1 …
分析:这个就是一个流程问题,先从最大币值开始,一直往下走,这样纸币的数量才会最少
先定义纸币的枚举类型
enum iConKind: Int{
case Jiao = 1
case Yuan = 10
case Ten = 100
case Twenty = 200
case Fifty = 500
case Hundred = 1000
}
case Jiao = 1
case Yuan = 10
case Ten = 100
case Twenty = 200
case Fifty = 500
case Hundred = 1000
}
然后定义纸币的实体lei
public class Money {
private var realMoney:Float?
internal var total:Float?{
didSet{
realMoney = self.total! * 10
}
}
public var nextMoney:Money?
var kind:iConKind
init( moneyKind:iConKind, nextOne:Money?){
self.kind = moneyKind
self.nextMoney = nextOne
}
public func doExchange(){
if let next = self.nextMoney {
var nextTotal = self.realMoney! % Float(self.kind.rawValue)
next.total = nextTotal / Float(10)
next.doExchange()
var number = Int( self.realMoney!) / self.kind.rawValue
println("币种 \(self.kind.rawValue/10) 个数\(number)")
}else{
println("币种 \(self.kind.rawValue) 角 个数 \(Int(self.total!*10))")
}
}
private var realMoney:Float?
internal var total:Float?{
didSet{
realMoney = self.total! * 10
}
}
public var nextMoney:Money?
var kind:iConKind
init( moneyKind:iConKind, nextOne:Money?){
self.kind = moneyKind
self.nextMoney = nextOne
}
public func doExchange(){
if let next = self.nextMoney {
var nextTotal = self.realMoney! % Float(self.kind.rawValue)
next.total = nextTotal / Float(10)
next.doExchange()
var number = Int( self.realMoney!) / self.kind.rawValue
println("币种 \(self.kind.rawValue/10) 个数\(number)")
}else{
println("币种 \(self.kind.rawValue) 角 个数 \(Int(self.total!*10))")
}
}
}
使用
var jiao = Money(moneyKind: .Jiao, nextOne: nil)
var yuan = Money(moneyKind: .Yuan, nextOne: jiao)
var ten = Money(moneyKind: .Ten, nextOne: yuan)
var twenty = Money(moneyKind: .Twenty, nextOne: ten)
var fifty = Money(moneyKind: .Fifty, nextOne: twenty)
var hundred = Money(moneyKind: .Hundred, nextOne: fifty)
hundred.total = 188.8
var yuan = Money(moneyKind: .Yuan, nextOne: jiao)
var ten = Money(moneyKind: .Ten, nextOne: yuan)
var twenty = Money(moneyKind: .Twenty, nextOne: ten)
var fifty = Money(moneyKind: .Fifty, nextOne: twenty)
var hundred = Money(moneyKind: .Hundred, nextOne: fifty)
hundred.total = 188.8
hundred.doExchange()
相关推荐
C#面向对象设计模式 Chain of Responsibility 职责链模式 视频讲座下载
责任链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。这种模式的主要优点是解耦了发送者和接收者之间的关系,使得系统更加灵活,...
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求的发送者和接收者解耦。通过将请求沿着处理链传递,直到有对象处理该请求为止,这种模式避免了请求发送者与具体处理者之间的紧...
C#面向对象设计模式 (行为型模式) Chain Of Responsibility 职责链模式 视频讲座下载
责任链(Chain of Responsibility)模式是一种行为设计模式,它允许我们向对象链中传递请求,让每个对象决定是否处理这个请求。在Java中,这种模式常用于事件处理、日志系统或者权限控制等场景,其核心思想是将处理...
总之,Chain of Responsibility模式提供了一种灵活的方式,通过构建处理者链来处理请求,使得系统具有良好的扩展性和适应性,降低了耦合度。在实际开发中,合理运用此模式可以优化系统架构,提高代码可维护性。
职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求的发送者和接收者解耦,使得多个对象都有可能处理一个请求,而无需显式指定接收者。在这个模式中,请求沿着一个处理者链进行传递,...
职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。在C#中,职责链模式的应用可以帮助我们构建灵活、可扩展的系统,减少对象...
Chain of Responsibility(责任链)模式是一种行为设计模式,它允许将请求沿着处理者对象的链进行发送,每个对象都可以处理请求或将其传递给链中的下一个对象。这种模式常用于事件处理或者命令的执行流程,使得多个...
**Java设计模式——责任链(Chain of Responsibility)** 在软件工程中,设计模式是一种解决常见问题的可重用解决方案。责任链模式是行为设计模式之一,它的主要思想是将请求的发送者和接收者解耦,通过将多个处理...
责任链模式(Chain of Responsibility Pattern)是一种常见的行为模式。 使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象串成一条链,并沿着这条链一直传递该请求,直到有...
职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许你将请求沿着处理者对象的链进行传递,直到某个对象处理该请求。在C#编程中,职责链模式能够帮助我们实现一种松耦合的架构,使得请求的发送者和...
### C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) #### 概述 在本篇文章中,我们将深入探讨C#中的Chain of Responsibility(职责链)模式,这是行为型设计模式的一种。虽然标题...
NULL 博文链接:https://linkcqu.iteye.com/blog/355806
责任链模式(Chain of Responsibility,CoR)是一种行为设计模式,它允许将请求沿着处理者对象的链式结构进行传递,直到某个对象处理这个请求。每个处理者对象都包含对下一个处理者的引用,如果当前处理者无法处理...
在这个`chain-of-responsibility-demo`中,我们可以预期找到一个实际应用了责任链模式的代码示例。通常,它会包含以下关键组件: 1. **Handler**(处理器):这是责任链中的基本单元,每个处理器都实现了处理请求的...
**PHP设计模式:Chain Of Responsibility(职责链模式)** 职责链模式是一种行为设计模式,它的主要目的是解耦请求的发送者和接收者,通过创建一个处理请求的对象链,使得多个对象都有机会处理这个请求。在PHP中,...
责任链模式(Chain of Responsibility)的目标是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 在处理用户的...
职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 职责链模式的一个...