iOS设计模式-代理模式- Swift
2019-03-01 本文已影响0人
velue
代理模式-原理案例
-
1、代理模式的定义
为其他对象提供一种代理,控制对这个对象的访问 -
2、代理模式的角色划分,
- 代理主要3个核心角色和两个特点
- 核心角色
角色一:代理对象
角色二:目标接口
角色三:具体目标对象
种类(变种):动态代理(Java语言)、静态代理 - 两个特点
特点一:持有目标对象引用
特点二:实现目标接口(可选)
- 核心角色
- 代理主要3个核心角色和两个特点
-
3、代理模式-原理案例实践
2017年9月13日,苹果发布了iPhoneX,行货比较贵,港货比便宜1000,我需要别人(朋友)去帮我代购。
代理对象:我们的朋友->Proxy
目标接口:我们想法,我们具体操作,一个业务场景->IPerson
具体目标:我->NSLogPerson
案例源码
//
// PersonProtocol.swift
// 代理模式-Swift
import Foundation
//角色二:目标接口
//目标接口:我们想法,我们具体操作,一个业务场景->PersonProtocol
protocol PersonProtocol {
//下单(选购)
func buyProduct()
//付款
func payProduct()
}
//
// MyPerson.swift
// 代理模式-Swift
import UIKit
//角色三:具体目标对象
//具体目标:我->MyPerson
class MyPerson: PersonProtocol {
func buyProduct() {
print("选购iPhoneX")
}
func payProduct() {
print("正在支付")
}
}
//
// Proxy.swift
// 代理模式-Swift
//
import UIKit
//角色一:
//代理对象
//两个特点
//特点一:持有目标对象引用
//特点二:实现目标接口(可选)
class Proxy: NSObject {
private var person:PersonProtocol
init(person:PersonProtocol) {
self.person = person
}
func buyProduct() {
//选购
self.person.buyProduct()
}
func payProduct() {
self.person.payProduct()
}
}
代码调用:
//案例一
let p = MyPerson()
let proxy = Proxy(person: p)
proxy.buyProduct()
proxy.payProduct()