美文网首页
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