加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift设计模式之观察者模式

发布时间:2020-12-14 06:59:58 所属栏目:百科 来源:网络整理
导读:转自 Swift设计模式 原文 Design-Patterns-In-Swift // 观察者模式 // 一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统 // 设计模式分类

转自

  • Swift设计模式

原文

  • Design-Patterns-In-Swift
// 观察者模式
// 一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统
// 设计模式分类:行为型模式

/// 观察者接口
protocol PropertyObserver : class {
    /** 属性即将改变监听方法 - parameter propertyName: 属性名 - parameter newPropertyValue: 新的值 */
    func willChangePropertyName(propertyName:String,newPropertyValue:Int)
    /** 属性已经改变监听方法 - parameter propertyName: 属性名 - parameter oldPropertyValue: 原来的值 */
    func didChangePropertyName(propertyName:String,oldPropertyValue:Int)
}

/// 观察对象
class TestChambers {

    weak var observer:PropertyObserver?

    var testChamberNumber: Int = 0 {
        willSet(newValue) {
            observer?.willChangePropertyName("testChamberNumber",newPropertyValue:newValue)
        }
        didSet {
            observer?.didChangePropertyName("testChamberNumber",oldPropertyValue:oldValue)
        }
    }
}

/// 具体观察者
class Observer : PropertyObserver {
    func willChangePropertyName(propertyName: String,newPropertyValue: Int) {
        print("(propertyName)的值将要改变为(newPropertyValue)")
    }

    func didChangePropertyName(propertyName: String,oldPropertyValue: Int) {
        print("(propertyName)的值已经改变,原来的值为(oldPropertyValue)")
    }
}

var observerInstance = Observer()
var testChambers = TestChambers()
testChambers.observer = observerInstance
testChambers.testChamberNumber += 1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读