zoukankan      html  css  js  c++  java
  • Swift语言精要

    在iOS编程中,我们经常谈到代理代理,也就是delegate,那么什么是代理呢?

    我们来看一下cocoa对它的描述:

    Delegation is Cocoa’s term for passing off some responsibilities of an object to another

    顾名思义:

    代理是把职责从一个对象传到另一个对象。

    其实,如果编写过Java或者C#程序的朋友应该知道,我们在设计的时候经常使用到接口和组合,道理是一样的。

    看一下下面的代码:

    首先,我们定义一个协议

    protocol SaveMediaDelegate {
        func save()
    }

    然后,我们把这个协议组合到我们的业务逻辑类中去

    class MyComputer {
        var delegate : SaveMediaDelegate?
        
        func saveInfo() {
          // Check to see if the delegate is there, then call it
          delegate?.save()
        }
    }

    接着,我们实现协议的不同表现形态

    class SaveToDisk : SaveMediaDelegate {
        func save() {
            println("Saving to disk...")
        }
    }
    
    class SaveToUsb : SaveMediaDelegate {
        func save() {
            println("Saving to usb...")
        }
    }

    然后,我们把我们的协议实现类注入到我们的业务类中去(DI - Dependency Injection)

    let myComputer = MyComputer()
    myComputer.saveInfo() // does nothing
    
    let diskMedia = SaveToDisk()
    myComputer.delegate = diskMedia
    myComputer.saveInfo() // prints "Saving to disk..."
    
    let usbMedia = SaveToUsb()
    myComputer.delegate = usbMedia
    myComputer.saveInfo() // prints "Saving to usb..."

    很简单吧,就是这么简单!

  • 相关阅读:
    提升树在回归方法中的应用
    前向分布算法
    提升树
    AdaBoost算法学习笔记
    统计学习方法-提升方法
    序列最小最优化算法
    mysql-profiling详解
    mysql,简单介绍一下索引
    MySQL Explain详解
    spring的事务传播行为
  • 原文地址:https://www.cnblogs.com/davidgu/p/5630801.html
Copyright © 2011-2022 走看看