码迷,mamicode.com
首页 > 编程语言 > 详细

Swift语言精要 - 浅谈代理模式(Delegate)

时间:2016-06-30 19:49:07      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

 

Swift语言精要 - 浅谈代理模式(Delegate)

标签:

原文地址:http://www.cnblogs.com/davidgu/p/5630801.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!