代理和委托回調(diào)

代理和委托回調(diào)

模擬一個學(xué)生找槍手代考的用代理
代理給我感覺像是 代理方和被代理方通過遵循同一個協(xié)議,以這個為橋梁,代理方有一個被代理方類的屬性,通過這個屬性可以把代理方和被代理方實現(xiàn)連接

protocol ExamCandidate: class {
    
    func answerTheQuestion()
}

class LazyStudent: ExamCandidate {
    var name: String
    
    init(name: String) {
        self.name = name
    }
    
    func answerTheQuestion() {
    }
}

class Gunman: ExamCandidate {
    var name: String
    //建立一個被代理方的屬性
    var target: LazyStudent?
    
    init(name: String) {
        self.name = name
    }
    
    func answerTheQuestion() {
    //意思是如果這里有一個LazyStudent的對象才執(zhí)行下面這些代碼
    //也就是說他本身是無法單獨(dú)執(zhí)行這個方法的
        if let stu = target {
            print("姓名: \(stu.name)")
            print("奮筆疾書答案")
            print("提交試卷")
        }
    }
}

let stu = LazyStudent(name: "王大錘")
let gun = Gunman(name: "駱昊")
gun.target = stu

gun.answerTheQuestion()

委托回調(diào)
委托方?jīng)]有實行寫答案的方法 方法由被委托方執(zhí)行,相當(dāng)于是
協(xié)議里面有方法但沒執(zhí)行-->被委托方(執(zhí)行協(xié)議里面的方法)
||
委托方(有一個遵從協(xié)議的屬性)
||
委托方通過屬性調(diào)用協(xié)議里面的方法實現(xiàn)自己想做的事

protocol ExamDelegate: class {
    
    func answerTheQuestion()
}

class LazyStudent {
    var name: String
    weak var delegate: ExamDelegate?
    
    init(name: String) {
        self.name = name
    }
    
    func joinExam() {
        print("姓名: \(name)")
        delegate?.answerTheQuestion()
    }
}

class Gunman: ExamDelegate {
    
    func answerTheQuestion() {
        print("奮筆疾書各種答案")
    }
}

let stu = LazyStudent(name: "王大錘")
let gun = Gunman()
stu.delegate = gun
stu.joinExam()


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • AFHTTPRequestOperationManager 網(wǎng)絡(luò)傳輸協(xié)議UDP、TCP、Http、Socket、X...
    Carden閱讀 5,323評論 0 12
  • 禪與 Objective-C 編程藝術(shù) (Zen and the Art of the Objective-C C...
    GrayLand閱讀 1,785評論 1 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,654評論 19 139
  • 不知道是因為我太要強(qiáng),還是因為我總愛逞強(qiáng),在每次遇到一些麻煩事的時候,不管別人問我什么,我都會說,沒事,我OK的。...
    李嬋亦閱讀 975評論 1 1
  • 不到兩年,足矣筑起心中的城,或許,越筑越高…… 小蘑菇頭,一個旅行箱一個雙肩包,跟珊珊踏上旅程,那是2014年的夏...
    戴上面具Smile閱讀 664評論 0 1

友情鏈接更多精彩內(nèi)容