ios-适配器模式

  • 对象1
import Foundation
class ObjectAdaptee1 {
    var IntCount = 0
}

复制代码
  • 对象2
//角色一:被适配者
import Foundation

class ObjectAdaptee {
    var URAMoney = 0.0
}
复制代码
  • 一个协议这里只举例一个方法,也可能有多个方法。
import Foundation

//角色二:目标接口
protocol ObjectTarget {
    func getRMB() -> Double
    
    func getInt() -> Int
}

extension ObjectTarget {
    func getInt()->Int {
        return 10
    }
}

复制代码
  • 让被适配者分别拥有某个方法
import Foundation

//角色三: 适配器
//实现目标接口
//持有被适配者的引用
class ObjectAdapter : ObjectTarget {
    
    var adaptee: ObjectAdaptee
    var adaptee1: ObjectAdaptee1
    
    init(adaptee: ObjectAdaptee,addaptee1:ObjectAdaptee1) {
        self.adaptee = adaptee
        self.adaptee1 = addaptee1
    }
    
    func getRMB() -> Double {
        return self.adaptee.URAMoney * 6.5
    }
    
    func getInt()->Int {
        return self.adaptee1.IntCount * 2
    }
    
}

复制代码
  • 调用
import Foundation

print("Hello, World!")

let adaptee = ObjectAdaptee()
adaptee.URAMoney = 100

let adaptee1 = ObjectAdaptee1()
adaptee1.IntCount = 10

let adapter = ObjectAdapter(adaptee: adaptee, addaptee1: adaptee1)
let rmb = adapter.getRMB()
let intC = adapter.getInt()
print("rmb = \(rmb)  int = \(intC)")


复制代码
  • 结果rmb = 650.0 int = 20
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享