微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift设计模式之适配器模式

转自

原文

// 适配器模式
// 百度百科:适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中
// 设计模式分类:结构型模式

/** * 两针插座接口 */
protocol TwoPinPlugProtocol {
    var pin1: String { get }
    var pin2: String { get }
}

/// 现在有一个三针插座
class ThreePinPlug {
    var pin1: String {
        get {
            return "pin1 of ThreePinPlug"
        }
    }
    var pin2: String {
        get {
            return "pin2 of ThreePinPlug"
        }
    }
    var pin3: String {
        get {
            return "pin3 of ThreePinPlug"
        }
    }
}

/// 这是一个适配器, 将三针插座转化为两针插座
class TwoPinPlugAdapter: TwoPinPlugProtocol {
    let threePinPlug: ThreePinPlug!

    init(plug: ThreePinPlug) {
        self.threePinPlug = plug
    }

    var pin1: String {
        get {
            return threePinPlug.pin1
        }
    }
    var pin2: String {
        get {
            return threePinPlug.pin2
        }
    }
}

/** 打印两针插座信息(不可以接收三针插座) - parameter plug: 两针插座 */
func printTwoPinPlugInfo(plug: TwoPinPlugProtocol) -> Void {
    print("two pin plug info: [pin1 = \(plug.pin1),pin2 = \(plug.pin2)]")
}

let threePinPlug = ThreePinPlug() // 目前有一个三针插座
let twoPinPlugAdapter = TwoPinPlugAdapter(plug: threePinPlug) // 用适配器来包装

printTwoPinPlugInfo(twoPinPlugAdapter) // 包装后可以将三针插座放入只接收两针插座的接口中

原文地址:https://www.jb51.cc/swift/323812.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐