美文网首页
iOS设计模式-代理模式- Swift

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

作者: velue | 来源:发表于2019-03-01 21:46 被阅读0次

代理模式-原理案例

  • 1、代理模式的定义
    为其他对象提供一种代理,控制对这个对象的访问

  • 2、代理模式的角色划分,

    • 代理主要3个核心角色和两个特点
      • 核心角色
        角色一:代理对象
        角色二:目标接口
        角色三:具体目标对象
        种类(变种):动态代理(Java语言)、静态代理
      • 两个特点
        特点一:持有目标对象引用
        特点二:实现目标接口(可选)
  • 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()


相关文章

网友评论

      本文标题:iOS设计模式-代理模式- Swift

      本文链接:https://www.haomeiwen.com/subject/wglneqtx.html