iOS设计模式-代理模式- Swift

2019-03-01  本文已影响0人  velue

代理模式-原理案例

案例源码

//
//  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()


上一篇下一篇

猜你喜欢

热点阅读