`

责任链模式 Chain Of Responsibility

阅读更多
责任链模式是适用于流程样式过程,比如流水线,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
}
然后定义纸币的实体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))")
        }
    }
}
 
使用
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
hundred.doExchange()
分享到:
评论

相关推荐

    Chain of Responsibility 职责链模式

    C#面向对象设计模式 Chain of Responsibility 职责链模式 视频讲座下载

    设计模式C++学习之责任链模式(Chain of Responsibility)

    责任链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。这种模式的主要优点是解耦了发送者和接收者之间的关系,使得系统更加灵活,...

    c++-设计模式之责任链模式(Chain of Responsibility Pattern)

    责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求的发送者和接收者解耦。通过将请求沿着处理链传递,直到有对象处理该请求为止,这种模式避免了请求发送者与具体处理者之间的紧...

    (行为型模式) Chain Of Responsibility 职责链模式

    C#面向对象设计模式 (行为型模式) Chain Of Responsibility 职责链模式 视频讲座下载

    java设计模式之责任链(chain of responsibility)

    责任链(Chain of Responsibility)模式是一种行为设计模式,它允许我们向对象链中传递请求,让每个对象决定是否处理这个请求。在Java中,这种模式常用于事件处理、日志系统或者权限控制等场景,其核心思想是将处理...

    Chain of Responsibility模式

    总之,Chain of Responsibility模式提供了一种灵活的方式,通过构建处理者链来处理请求,使得系统具有良好的扩展性和适应性,降低了耦合度。在实际开发中,合理运用此模式可以优化系统架构,提高代码可维护性。

    chain of responsibility 职责链模式(行为模式)

    职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求的发送者和接收者解耦,使得多个对象都有可能处理一个请求,而无需显式指定接收者。在这个模式中,请求沿着一个处理者链进行传递,...

    C#面向对象设计模式纵横谈(20):(行为型模式) Chain Of Responsibility 职责链模式

    职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。在C#中,职责链模式的应用可以帮助我们构建灵活、可扩展的系统,减少对象...

    Chain Of Responsibility模式

    Chain of Responsibility(责任链)模式是一种行为设计模式,它允许将请求沿着处理者对象的链进行发送,每个对象都可以处理请求或将其传递给链中的下一个对象。这种模式常用于事件处理或者命令的执行流程,使得多个...

    【Java设计模式】(3)责任链Chain of Responsibility

    **Java设计模式——责任链(Chain of Responsibility)** 在软件工程中,设计模式是一种解决常见问题的可重用解决方案。责任链模式是行为设计模式之一,它的主要思想是将请求的发送者和接收者解耦,通过将多个处理...

    chain of responsibility.pptx

    责任链模式(Chain of Responsibility Pattern)是一种常见的行为模式。 使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象串成一条链,并沿着这条链一直传递该请求,直到有...

    C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) (Level 300)

    职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许你将请求沿着处理者对象的链进行传递,直到某个对象处理该请求。在C#编程中,职责链模式能够帮助我们实现一种松耦合的架构,使得请求的发送者和...

    C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式)

    ### C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) #### 概述 在本篇文章中,我们将深入探讨C#中的Chain of Responsibility(职责链)模式,这是行为型设计模式的一种。虽然标题...

    设计模式 - Chain of Responsibility Pattern(责任链模式)

    NULL 博文链接:https://linkcqu.iteye.com/blog/355806

    Java设计模式之责任链模式(Chain of Responsibility模式)介绍

    责任链模式(Chain of Responsibility,CoR)是一种行为设计模式,它允许将请求沿着处理者对象的链式结构进行传递,直到某个对象处理这个请求。每个处理者对象都包含对下一个处理者的引用,如果当前处理者无法处理...

    chain-of-responsibility-demo 责任链模式demo

    在这个`chain-of-responsibility-demo`中,我们可以预期找到一个实际应用了责任链模式的代码示例。通常,它会包含以下关键组件: 1. **Handler**(处理器):这是责任链中的基本单元,每个处理器都实现了处理请求的...

    php设计模式 Chain Of Responsibility (职责链模式)

    **PHP设计模式:Chain Of Responsibility(职责链模式)** 职责链模式是一种行为设计模式,它的主要目的是解耦请求的发送者和接收者,通过创建一个处理请求的对象链,使得多个对象都有机会处理这个请求。在PHP中,...

    责任链模式_javaDemo

    责任链模式(Chain of Responsibility)的目标是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 在处理用户的...

    Objective C职责链模式设计源码

    职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 职责链模式的一个...

Global site tag (gtag.js) - Google Analytics