美文网首页iOS开发
设计模式与软件原则 (三): 委托设计模式

设计模式与软件原则 (三): 委托设计模式

作者: _浅墨_ | 来源:发表于2022-02-24 21:56 被阅读0次
委托设计模式(Delegation Design Pattern)

根据 Apple 的说法,“委托是一种简单而强大的模式:程序中的一个对象代表另一个对象或与另一个对象协作”。委托设计模式将责任(具体实现)移交给其它实体。

来,我们一起看一个示例:

struct Product {
    var name: String
}

protocol ProductDeliveryDelegate {
    func send(product: Product)
}

struct OnlineShop {
    
    private(set) var shopName: String
    private(set) var products = [Product]()
    private var productDeliveryDelegate: ProductDeliveryDelegate?
    
    init(shopName: String) {
        self.shopName = shopName
        let delivery = Delivery()
        productDeliveryDelegate = delivery
    }
    
    mutating func add(product: Product) {
        self.products.append(product)
    }
    
    func sendAllProducts() {
        for product in products {
            productDeliveryDelegate?.send(product: product)
        }
    }
}

class Delivery: ProductDeliveryDelegate {
    
    func send(product: Product) {
        print("\(product.name) sent!")
    }    
}

使用方法:

var onlineShop = OnlineShop(shopName: "Amazon")

onlineShop.add(product: Product(name: "MacBook Pro"))
onlineShop.add(product: Product(name: "Apple Watch"))
onlineShop.add(product: Product(name: "iMac"))

onlineShop.sendAllProducts()

相关文章

网友评论

    本文标题:设计模式与软件原则 (三): 委托设计模式

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