Swift设计模式之观察者模式

前端之家收集整理的这篇文章主要介绍了Swift设计模式之观察者模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转自

原文

  1. // 观察者模式
  2. // 一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统
  3. // 设计模式分类:行为型模式
  4.  
  5. /// 观察者接口
  6. protocol PropertyObserver : class {
  7. /** 属性即将改变监听方法 - parameter propertyName: 属性名 - parameter newPropertyValue: 新的值 */
  8. func willChangePropertyName(propertyName:String,newPropertyValue:Int)
  9. /** 属性已经改变监听方法 - parameter propertyName: 属性名 - parameter oldPropertyValue: 原来的值 */
  10. func didChangePropertyName(propertyName:String,oldPropertyValue:Int)
  11. }
  12.  
  13. /// 观察对象
  14. class TestChambers {
  15.  
  16. weak var observer:PropertyObserver?
  17.  
  18. var testChamberNumber: Int = 0 {
  19. willSet(newValue) {
  20. observer?.willChangePropertyName("testChamberNumber",newPropertyValue:newValue)
  21. }
  22. didSet {
  23. observer?.didChangePropertyName("testChamberNumber",oldPropertyValue:oldValue)
  24. }
  25. }
  26. }
  27.  
  28. /// 具体观察者
  29. class Observer : PropertyObserver {
  30. func willChangePropertyName(propertyName: String,newPropertyValue: Int) {
  31. print("\(propertyName)的值将要改变为\(newPropertyValue)")
  32. }
  33.  
  34. func didChangePropertyName(propertyName: String,oldPropertyValue: Int) {
  35. print("\(propertyName)的值已经改变,原来的值为\(oldPropertyValue)")
  36. }
  37. }
  38.  
  39. var observerInstance = Observer()
  40. var testChambers = TestChambers()
  41. testChambers.observer = observerInstance
  42. testChambers.testChamberNumber += 1

猜你在找的Swift相关文章