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