iOS开发

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

2022-02-24  本文已影响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()
上一篇 下一篇

猜你喜欢

热点阅读