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

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

  • 相关阅读:
    asp.net mvc Bundle
    Nginx配置文件详细说明
    Nginx 负载均衡配置和策略
    WPF 体系结构
    理解WPF中的视觉树和逻辑树
    物料需求預估
    缓存ViewState减少网络传输
    xingfu
    如何在表格中插入图片
    add
  • 原文地址:https://www.cnblogs.com/davidgu/p/5630801.html
Copyright © 2011-2022 走看看