大话设计模式-策略模式

大话设计模式的例子都是用C#写的,对于熟悉其他语言的开发者来说,看起来可能不是那么的方便。为了加深理解,我在学习策略模式的时候顺便用OC和swift把书中的例子实现了,分享出来,希望对大家能有帮助。欢迎拍砖。。。。。。

swift代码:

class CashSuper{
        var money:Double = 0.0
        func  acceptCash(money:Double)->Double{
        return money
       }
}

class CashNormal: CashSuper {
        override func acceptCash(money:Double) -> Double {
                  return money
        }
}

class CashReturn: CashSuper {
        override func acceptCash(money:Double) -> Double {
                return money-100
        }
}

class CashDerate: CashSuper {
        override func acceptCash(money:Double) -> Double {
                return money*0.8
        }
}

class CashContext {
        var cs = CashSuper.init()
        func inputtype(type:String){
              switch type{
                    case "正常收费":
                            let cs0 = CashNormal.init()
                            cs = cs0
                    case "返利收费":
                            let cs1 = CashReturn.init()
                            cs = cs1
                    case "打折收费":
                            let cs2 = CashDerate.init()
                            cs = cs2
                    default:
                            print("type error")
           }
    }

        func getResult(money:Double)->Double{
                return cs.acceptCash(money)
        }
}

var context = CashContext.init()
context.inputtype("打折收费")
context.getResult(100.0)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,251评论 4 61
  • #######大话设计模式的例子都是用C#写的,对于熟悉其他语言的开发者来说,看起来可能不是那么的方便。为了加深理...
    joan_阅读 329评论 0 2
  • 有个人很爱写日记,我跟他分开的时候,他把日记本里属于我的那一部分整齐撕下来,还给了我,求我别在打扰他的生活。 前几...
    橙子fa阅读 250评论 0 0
  • 在这里收集一些开发中常用的技巧文章,比如调试,提高开发效率等. 相关文章链接 1.iOS开发调试技巧总结 201...
    纸简书生阅读 234评论 1 1