iOS设计模式(01):观察者】的更多相关文章

iOS设计模式(01):观察者 iOS-Observer-Pattern 什么是观察者模式 什么是观察者模式?你曾经订阅过报纸吗?在订阅报纸的时候,你不用去任何地方,只需要将你的个人地址信息以及订阅信息告诉出版社,出版社就知道如何将相关报纸传递给你.这种模式的第二个名称叫做发布/订阅模式. 在GoF中是这样描述观察者模式的--观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 观察者模式的的…
版权声明:原创作品,谢绝转载!否则将追究法律责任. 观察者设计模式 在观察者设计模式里面,一个对象通知其他的对象一些状态的改变.涉及这些对象不需要知道另一个对象---因此鼓励解耦设计模式.这个设计模式经常被用来通知感兴趣的对象当一个属性被改变时候. 通常实现需要一个观察者注册另一个对象感兴趣的状态.当状态改变,所有的观察者对象被通知改变了.苹果的远程通知服务就是一个全球性的例子. 如果你一直坚持MVC的概念,你需要允许你的model对象和View对象通信,但是不能直接引用,这就是观察者设计模式的…
iOS 设计模式-你可能已经听说过这个词,但是你真正理解它意味着什么吗?虽然大多数的开发者可能都会认为设计模式是非常重要的,然而关于设计模式这一主题的文章却不多,并且有时候我们开发者在写代码的时候也不会太关注它.  在软件设计领域,设计模式是对通用问题的可复用的解决方案.设计模式是一系列帮你写出更可理解和复用代码的模板,设计模式帮你创建松耦合的代码以便你不需要费多大力就可以改变或者替换代码中的组件.  如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的…
很赞的总结 iOS Design Patterns 中文版 IOS设计模式之一(MVC模式,单例模式) IOS设计模式之二(门面模式,装饰器模式) IOS设计模式之三(适配器模式,观察者模式) IOS设计模式之四(备忘录模式,命令模式) 源码 https://github.com/mobilefeng/BlueLibrary ==========MVC(model, view, controller)模式========== 1. model Album:专辑数据 Album+TableRepr…
iOS 设计模式之工厂模式 分类: 设计模式2014-02-10 18:05 11020人阅读 评论(2) 收藏 举报 ios设计模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一般是alloc一个对象,如果需要创建100个这样的对象,如果是在一个for循环中还好说,直接一句alloc就行了,但是事实并不那么如意,我们可能会在不同的地方去创建这个对象,那么我们可能需要写100句alloc 了,但是如果我们在创建对象的时候,需要在这些对象创建完之后,为它的一个属性添加一个固定的…
iOS设计模式之生成器 1.生成器模式的定义 (1): 将一个复杂的对象的构件与它的表示分离,使得相同的构建过程能够创建不同的表示 (2): 生成器模式除了客户之外还包括一个Director(指导者),和一个builder(生成器).client通过向指导者(Director)提出需求,指导者(Director)向bulider(生成器)提供信息来建造特定的产品.bulider依据特定的信息生产产品并返回给客户. 2:使用生成器的优点 构建某些对象有多种不同的方式,假设这些逻辑包括在构建这些对象…
IOS设计模式之三:MVC模式   模型-视图-控制器 这个模式其实应该叫做MCV,用控制器把model与view隔开才对,也就是model与view互相不知道对方的存在,没有任何瓜葛,他们就像一个团队里吵了架的同事,如果有项目需要他俩来参与,那么最好有第三者来管理他俩之间的沟通与协调.这个第三者就是控制器. 既然管理,那么姑且就把这个控制器提做项目经理吧,这样的话让他俩干啥就得干啥. 让我们来欣赏一下这张图(摘自斯坦福公开课的课件): 先撇开那些乱七八糟的箭头单看他们之间的分界线,view与c…
iOS设计模式 - 享元 原理图 说明 享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件:它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件.通常物件中的部分状态是可以分享.常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元. 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // Menu.h // FlyweightPattern // // Created by YouX…
iOS设计模式 - 责任链 原理图 说明 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任. 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // ChainOfResponsibilityProtocol.h // ChainOf…
iOS设计模式 - 模板 原理图 说明 定义一个操作中的算法的骨架,而将步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤. 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // GameProtocol.h // TemplatePattern // // Created by YouXianMing on 15/10/27. // Copyright © 2015年 ZiPeiYi. All…
iOS设计模式 - 访问者 原理图 说明 表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 1.Visitor 抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口.该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色,这样访问者就可以通过该元素角色的特定接口直接访问它. 2.ConcreteVisitor.具体访问者角色,实现Visitor声明的接口. 3.Element 定义一个接受访问操作(accept()),…
iOS设计模式 - 迭代器 原理图 说明 提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // Node.h // IteratorPattern // // Created by YouXianMing on 15/10/26. // Copyright © 2015年 YouXianMing. All rights reserved. // #impo…
iOS设计模式 - 中介者 原理图 说明 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 注:中介者对象本身没有复用价值,只是将逻辑操作封装在一个类里面而已 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // TextFieldMediator.h // MediatorPattern // // Created by YouXianMing on…
iOS设计模式 - 组合 原理图 说明 将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性.掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义. 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // File.h // CompositePattern // // Created by YouXianMing on 15/10…
iOS设计模式 - 命令 原理图 说明 命令对象封装了如何对目标执行指令的信息,因此客户端或调用者不必了解目标的任何细节,却仍可以对他执行任何已有的操作.通过把请求封装成对象,客户端可以把它参数化并置入队列或日志中,也能够支持可撤销操作.命令对象将一个或多个动作绑定到特定的接收器.命令模式消除了作为对象的动作和执行它的接收器之间的绑定. 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // Invoker.h // Command…
iOS设计模式 - 生成器 原理图 说明 1. 将构建复杂对象的过程拆分成一个一个的模块,通过统一的指导者来指导对象的构建过程称之为生成器模式 2. 生成器模式适合用于构建组合的对象 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // CarBuilder.h // BuilderPattern // // Created by YouXianMing on 15/9/14. // Copyright (c) 2015年 You…
iOS设计模式 - 备忘录 原理图 说明 1. 在不破坏封装的情况下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态 2. 本人已经将创建状态与恢复状态的逻辑抽象成了协议,并配合备忘录中心一起使用 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // MementoCenter.h // MementoPattern // // Created by YouXianMing on 1…
iOS设计模式 - 代理 原理图 说明 1. 代理模式大家都用过,但用抽象基类NSProxy实现代理估计鲜有人用 2. 本人用NSProxy实现了代理模式,对于理解消息转发机制有点帮助 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // AbstractProxy.h // AppProxy // // Created by YouXianMing on 15/8/4. // Copyright (c) 2015年 YouXia…
iOS设计模式 - 装饰 原理图 说明 1. cocoa框架本身实现了装饰模式(category的方式实现了装饰模式) 2. 装饰模式指的是动态的给一个对象添加一些额外的职责,相对于继承子类来说,装饰模式更加灵活 *3. 本人仅仅实现了最简单的装饰模式,装饰器类是一个具体的类,非抽象类 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // GamePlay.h // DecoratorPattern // // Created b…
iOS设计模式 - 原型 原理图 说明 1. 原型模式指的是从一个已有的对象复制并创建出新的对象 2. 当一个类的实例之间存在差异,而这些差异仅是状态的若干组合,复制原型要比手工实例化更加方便 3. 当一个类并不容易创建(比如有着复杂的组合对象),且复制已有的组合对象要比对副本修改更加容易,此时,可以考虑使用原型模式 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // BaseCopyObject.h // PrototypeP…
iOS设计模式 - 外观 原理图 说明 1. 当客服端需要使用一个复杂的子系统(子系统之间关系错综复杂),但又不想和他们扯上关系时,我们需要单独的写出一个类来与子系统交互,隔离客户端与子系统之间的联系,客户端只与这个单独写出来的类交互 2. 外观模式实质为为系统中的一组接口提供一个统一的接口,外观定义了一个高层接口,让子系统易于使用 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // ShapeMaker.h // Facade…
iOS设计模式 - 桥接 示意图 说明 1. 桥接模式为把抽象层次结构从实现中分离出来,使其可以独立变更,抽象层定义了供客户端使用的上层抽象接口,实现层次结构定义了供抽象层次使用的底层接口,实现类的引用被封装于抽象层的实例中,桥接就形成了. 2. 桥接模式可以解决具有功能类似但又不完全相同的某种功能架构,为了能让实现更加灵活. 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // ConsoleController.h // Ga…
iOS设计模式 - 策略 效果 说明 1. 把解决相同问题的算法抽象成策略(相同问题指的是输入参数相同,但根据算法不同输出参数会有差异) 2. 策略被封装在对象之中(是对象内容的一部分),策略改变的是对象的内容.如果从外部扩展了对象的行为,就不叫策略模式,而是装饰模式. 3. 策略模式可以简化复杂的判断逻辑(if - else) 4. 如果对面向对象基本原理以及设计模式基本原理不熟悉,本教程会变得难以理解. 源码 https://github.com/YouXianMing/iOS-Design…
iOS设计模式 - 适配器 效果 说明 1. 为了让客户端尽可能的通用,我们使用适配器模式来隔离客户端与外部参数的联系,只让客户端与适配器通信. 2. 本教程实现了适配器模式的类适配器与对象适配器两种模式,各有优缺点. 3. 如果对面向对象基本原理以及设计模式基本原理不熟悉,本教程会变得难以理解. 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // BusinessCardView.h // Adapter // // Crea…
iOS设计模式(02):单例模式 singleton-design-pattern 什么是单例模式? 单例模式是一个类在系统中只有一个实例对象.通过全局的一个入口点对这个实例对象进行访问.在iOS开发中,单例模式是非常有用的一种设计模式.如下图,是一个单例模式的UML类图. singleton_uml_class_structure iOS SDK中也有许多类使用了单例模式,例如,UIApplication:当程序启动的时候,会调用UIApplicationMain方法,在该方法中,会实例化一个…
设计模式:观察者(Observer)模式 一.前言   观察者模式其实最好的名称应该是“发布订阅”模式,和我们现在大数据之中的发布订阅方式比较类似,但是也有区别的地方,在上一个设计模式,我们学习的是仲裁者模式,其中当控件的状态发生改变的时候就会向仲裁者发出信息,让仲裁者进行仲裁,这其实和发布订阅非常的类似,但是用处是不一样的,仲裁者模式是用来解除复杂对象之间的相互调用的关系,从而独立出来进行开发,而观察者模式是在被观察者状态改变的时候被动的被唤醒进行相应的处理,两者的实现比较类似,比如都是被动唤…
说在前面 进入正式的设计模式交流之前,扯点闲话.我们在项目开发的过程中,经常会不经意的使用一些常见的设计模式,如单例模式.工厂方法模式.观察者模式等,以前做.NET开发的时候,认真拜读了一下程杰老师的<大话设计模式>,程老师用诙谐的语言,贴近生活的示例,让我对设计模式有了一个大致的了解.转型做IOS开发后,一直想阅读一下针对IOS设计模式方面的书籍,也买了一本<Objective-C编程之道:iOS设计设计模式解析>进行学习,本系列设计模式的文章,有些内容来自这两本书籍,也有些内容…
来自<Objective-C编程之道iOS设计模式解析>一书的摘要总结 一.Prototype 原型模式 定义:使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象.(<设计模式>1994) 一般在初始化信息不发生变化的情况下,克隆是最好的办法.这既可以隐藏对象创建的细节,又对性能是大大的提升. 适用情景: 需要创建的对象应独立于其类型与创建方式. 要实例化的类是运行时决定的. 不想要与产品层次相对应的工厂层次. 不同类的实例间的差异仅是状态的若干组合.因此复制相应数量的…
iOS设计模式 - (3)简单工厂模式           by Colin丶 转载请注明出处:              http://blog.csdn.net/hitwhylz/article/details/40381721 一.简述 简单工厂模式(FACTORY),通过面向对象的封装,继承和多态来减少程序的耦合度. 将一个详细类的实例化交给一个静态工厂方法来运行. 该模式中的角色包括: 工厂类(Simple Factory): 仅仅包括了创建详细类的静态方法. 抽象产品(Product…
近期可自由安排的时间比較多, iOS应用方面, 没什么好点子, 就先放下, 不写了.花点时间学学设计模式. 之后将会写一系列博文, 记录设计模式学习过程. 当然, 由于我自己是搞iOS的, 所以之后设计代码部分, 将尽量与objective-c相结合. iOS设计模式 - 概述           by Colin丶 转载请注明出处:              http://blog.csdn.net/hitwhylz/article/details/40372113 一.定义 设计模式(Des…