Swift语言精要 - 浅谈代理模式(Delegate)
2016-06-30 17:56
375 查看
在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..."
很简单吧,就是这么简单!
我们来看一下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)
- Swift语言精要 - Dictionary(字典)
- Swift语言精要 - Dictionary(字典)
- Swift 第一周小结(1)
- 初学Swift_函数
- Swift ☞ Masonry适配详解
- Swift ☞ OC调用
- 自定义数据类型 --- 枚举类型全解(swift2.3)
- Swift tour
- swift —— as 、 as! 、as?的区别
- swift-隐藏键盘
- swift-error-this class is not key value coding-compliant for the key sure.'
- swift学习笔记~持续更新
- Swift 范的 CGRect、CGSize 和 CGPoint
- Swift3.0带来的变化汇总系列三——函数和闭包写法上的微调
- 详解Swift中属性的声明与作用
- swift--button的简单实用
- Swift UITableView 使用的简单介绍
- Swift自定义UITableViewCell
- Swift语言中的控制语句和函数