zoukankan      html  css  js  c++  java
  • Swift观察者模式

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

    //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()
  • 相关阅读:
    Asp.net2.0页面执行顺序
    [转帖]常用的SQL语句
    [转帖]黑客技术经典问题FAQ
    面试的一些心得
    较全的正则表达式
    很好的创业建议
    [转帖]如何让菜单项与工具栏按钮对应
    源码下载网站
    [转帖]一段测试代码
    GOF设计模式趣解(23种设计模式) <转自百度空间>
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5090867.html
Copyright © 2011-2022 走看看