设计模式-4.代理模式

104 阅读1分钟

一句话总结

为其他对象提供一种代理,以控制对这个对象的访问。

背景

小明喜欢小红,想送她礼物。但自己不好意思直接送,就拜托自己的好朋友小强代送。

Code

protocol GiveGift {
    func giveDolls()
    func giveFlowers()
    func giveChocolate()
}

class Pursuit: GiveGift {
    func giveDolls() {
        print("给小红送洋娃娃")
    }
    
    func giveFlowers() {
        print("给小红送花")
    }
    
    func giveChocolate() {
        print("给小红送巧克力")
    }
}

class Proxy: GiveGift {
    weak var pursuit: Pursuit?
    init(pursuit: Pursuit) {
        self.pursuit = pursuit
    }
    
    func giveDolls() {
        pursuit?.giveDolls()
    }
    
    func giveFlowers() {
        pursuit?.giveFlowers()
    }
    
    func giveChocolate() {
        pursuit?.giveChocolate()
    }
}

func main() {
    let ming = Pursuit()
    let qiang = Proxy(pursuit: ming)
    
    qiang.giveDolls()
    qiang.giveFlowers()
    qiang.giveChocolate()
}