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..."

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

  • 相关阅读:
    Linux 笔记
    查看 Linux 系统版本信息
    在网站中添加 https 百度分享
    Linux 中 Xampp 的 https 安全证书配置
    Windows 笔记
    Linux 笔记
    CentOS7 自定义登录前后欢迎信息
    构建器内部的多形性方法的行为
    编译dubbo项目方法
    《Thing in java》多态
  • 原文地址:https://www.cnblogs.com/davidgu/p/5630801.html
Copyright © 2011-2022 走看看