用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()

转载于:https://www.cnblogs.com/Free-Thinker/p/5090867.html

Swift观察者模式相关推荐

  1. Swift - 使用NSNotificationCenter发送通知,接收通知

    1,通知(NSNotification)介绍 这里所说的通知不是指发给用户看的通知消息,而是系统内部进行消息传递的通知.要介绍通知之前,我们需要先了解什么是观察者模式. 观察者模式 (Observer ...

  2. Swift使用通知Notification

    通知简介 通知(Notification)是观察者模式(observer)中的一种, 结构为: 发布者 -> 通知中心 -> 接收者, 是iOS 开发中常用通信方式,为单例模式使用.可以实 ...

  3. iOS开发之观察者模式初探

    2019独角兽企业重金招聘Python工程师标准>>> 观察者模式本质上时一种发布-订阅模型,用以消除具有不同行为的对象之间的耦合,通过这一模式,不同对象可以协同工作,同时它们也可以 ...

  4. Swift 中的设计模式 #3 外观模式与适配器模式

    作者:Andrew Jaffee,原文链接,原文日期:2018-09-04 译者:郑一一:校对:BigNerdCoding,pmst,Forelax:定稿:Forelax 本文是我的设计模式系列教程的 ...

  5. 从0开始学Swift笔记整理(五)

    这是跟在上一篇博文后续内容: --Core Foundation框架 Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.虽然在Sw ...

  6. 观察者模式 - Observer

    在观察者模式里,一个对象在状态变化的时候会通知另一个对象.参与者并不需要知道其他对象的具体是干什么的 - 这是一种降低耦合度的设计.这个设计模式常用于在某个属性改变的时候通知关注该属性的对象. 常见的 ...

  7. swift问题集--未完待续

    达到效果:理解并能口诉才能算过 Q:dynamic 的作用-红记 静态 动态 kvo kvc 继承NSObject 由于 swift 是一个静态语言, 所以没有 Objective-C 中的消息发送这 ...

  8. 移动开发 | Swift 中的设计模式 #3 外观模式与适配器模式

    本文是我的设计模式系列教程的第三篇.在第一篇文章中,我介绍了 创建型模式中的工厂模式和单例模式.在第二篇文章中,又讨论了一下 行为型模式中的观察者模式和备忘录模式. 在本文中,我会就结构型模式中的外观 ...

  9. swift enum高级用法

    本文是一篇详细且具有实战意义的教程,涵盖几乎所有枚举(Enum)知识点,为你解答Swift中枚举的应用场合以及使用方法. 和switch语句类似,Swift中的枚举乍看之下更像是C语言中枚举的进阶版本 ...

  10. [译] Swift 中的动态特性

    原文地址:Dynamic Features in Swift 原文作者:Mike Finney 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:iWesli ...

最新文章

  1. 数据库MYSQL学习系列三
  2. NR 5G PDCP分组数据汇聚协议
  3. docker-compose.yml 配置文件编写
  4. HDU1715 大菲波数(大数相加)(Java题解)
  5. mysql my-small.ini_MySql优化之my-small.ini配置
  6. 2011年全国软件大赛模拟题及参考答案(Java本科组)
  7. kubernetes(七)项目部署方式:蓝绿部署,灰度发布/金丝雀发布,滚动更新
  8. 网易云深度学习第一课第一周编程作业
  9. Java流程控制02 选择结构 if结构 switch结构
  10. php毛玻璃,毛玻璃的性质及功能特点
  11. mysql 可逆编码,简单明白彻底解决 MySQL 中文编码问题
  12. 万条留言!这本Python凭啥火爆程序员的朋友圈?
  13. Selenium如何处理类悬浮弹出菜单
  14. 将excel数据导入到SQL server数据库
  15. PythonーーJetBrains PyCharm安装
  16. TSC2046EIPWR 德州TI 具有低压数字 I/O 和扩展 ESD 保护的 4 线触摸屏控制器
  17. 《气候宣言》宣布100多家签约组织,承诺至2040年或更早实现净零碳排放
  18. 手机与电脑视频呼java_Android手机播放电脑视频文件-屌丝必备
  19. 11210怎么等于24_算24点
  20. 使用selenium爬取唯品会

热门文章

  1. ccs安装多版本编译器离线_CCS编译器安装,DSP/BIOS安装
  2. python 制作聊天程序-python实现点对点聊天程序
  3. 猫猫学iOS之小知识之xcode6自己主动提示图片插件 KSImageNamed的安装
  4. python学习笔记-递归函数
  5. MVC中使用编辑器提交内容时出错的解决方法
  6. 基础矩阵,本质矩阵,单应性矩阵讲解,在ORB-SLAM相机的位姿初始化的应用
  7. 3月13 论文学习步骤:google的cartographer的论文《Real-Time Loop Closure in 2D LIDAR SLAM》
  8. C语言volatile关键字
  9. xadmin可能是帮助我完成django网站的一大助力
  10. 基于16QAM调制的OFDM系统仿真实现