Swift观察者模式

用swift写一个观察者模式,集合了swift语言中类,数组,协议,方法,字符串,条件控制语句等一些语法。
简单介绍下观察者模式,在观察者模式中,会改变的是主题的状态以及观察者的数目。用这个模式,可以改变依赖于主题状态的对象,去不必改变主题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//main.swift
//Observer(观察者模式)
//Created by jy on 15/4/26.
//Copyright (c) 2015年 jy. All rights reserved.
import Foundation
//观察者模式中,会改变的是主题的状态以及观察者的数目。
用这个模式,可以改变依赖于主题状态的对象,去不必改变主题。
//主题和观察者都使用协议:观察者利用主题的协议向主题注册,
而主题利用观察者协议(接口)通知观察者。这样可以让两者运作正常,又同时具有松耦合的特点
//定义协议,观察者要实现的
protocol Observerable{
func update();
}
//观察者实现协议
class Subscriber : Observerable{
//定义属性状态
func update() {
println("Callback")
}
}
/**
* 主题
*/
class Paper{
//定义空数组
var observers = Array<Subscriber>()
//注册观察者
func register(sub:Subscriber){
self.observers.append(sub)
}
//外部统一访问
func trigger(){
var count = self.observers.count;
//判断是否注册为空
if count != 0 {
for obs in self.observers {
//通知
obs.update()
}
}
}
}
var paper = Paper()
//观察者
var sub1 = Subscriber()
var sub2 = Subscriber()
//注册
paper.register(sub1)
paper.register(sub2)
paper.trigger()