IOS设计模式
Vicent_Z
态度决定一切,细节决定成败!
展开
-
IOS设计模式学习(1)设计模式初窥
1 前言 有些人可能会问,我也能实现某某功能,为什么要花时间来学习设计模式。今天我们就来了解一下设计模式的优势: 程序(包括对象和类),如果在设计中使用了设计模式,将来将更易于复用与扩展,更易于变更。而且基于设计模式的程序会更加简洁而高效,因为达到同样目的的所需代码行数会更少。 接下来就让我们一起走入神奇的设计模式的世界来体会其给我们带来便利。 2 详述 记得之前文章我们介绍了Cocoa原创 2013-06-12 09:17:33 · 2278 阅读 · 1 评论 -
IOS设计模式学习(20)命令
1 前言 在面向对象中,把指令封装在各种命令对象中。命令对象可以被传递而且在指定时刻被不同的客户端复用。这一概念精心设计而来的设计模式叫做命令(Command)模式。 2 详述 2.1 简述 命令对象封装了如何对目标执行指令的信息,因此客户端或调用者不必了解目标的任何细节,却仍可以对他执行任何已有的操作。通过把请求封装成对象,客户端可以把它参数化并置入对类或日志中,也能够支持可撤销的操作。原创 2013-07-04 13:59:38 · 1701 阅读 · 1 评论 -
IOS设计模式学习(11)中介者
1 前言 面向对象的设计鼓励把行为分散到不同对象中。这种分散可能导致对象之间的相互关联。在最糟糕的情况下,所有对象都彼此了解并相互操作。但是增加的相互关联又减少了获得的益处。增加的关联似的对象很难或不能在不依赖其他对象的情况下工作。 2 详述 3 结语原创 2013-07-03 15:09:14 · 1940 阅读 · 0 评论 -
IOS设计模式学习(12)观察者
1 前言 观察者模式也叫做发布-订阅模式。如它的别名暗示的那样,它很像杂志的订阅。当从杂志发行商订阅杂志的时候,读者把名字和邮寄地址提供给发行商,这样新的一期就能送到读者手上。发行商保证正确的杂志送到正确的地址。一般来说,读者不会受到他没有订阅的杂志。这正是观察者模式的工作方式。 2 详述 2.1 简述 观察者通过通知器(发行商)把自己注册到(订阅)特定的通知(杂志)。当有通知的时候,观察原创 2013-07-03 16:43:14 · 1426 阅读 · 0 评论 -
IOS设计模式学习(13)组合
1 前言 可以把组合想象成为一个实体,它包含着同一类型的其它实体。这个结构就像由父节点实体和子节点实体连接而成的树。 2 详述 3 结语原创 2013-07-03 19:03:57 · 1612 阅读 · 0 评论 -
IOS设计模式学习(17)责任链
1 前言 对象引用了同一类型的另一个对象,形成一条链。链中的每个对象实现了童颜的方法,处理对链中第一个对象发起的同一个请求。如果第一个对象不是知道如何处理请求,它就把请求传给下一个响应器。 2 详述 2.1 简述 十多个对象昂都有机会处理请求,从而避免请求的发送者和接受者之间发生耦合。此模式将这些对象连城一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 2.2 何时使用 (1)原创 2013-07-03 20:55:51 · 1821 阅读 · 0 评论 -
IOS设计模式学习(19)策略
1 前言 面向对象软件设计中,我们可以把相关算法分离为不同的类,成为策略。与这种做法有关的一种设计模式成为策略模式。 2 详述 2.1 简述 策略模式中得一个关键角色是策略类,它为所有支持的或相关的算法声明了一个共同接口。另外,还有使用策略接口来实现相关算法的具体策略类。场景类的对象配置有一个具体策略对象的实例,场景对象使用策略接口调用由具体策略类定义的算法。 定义一系列算法,把他们一个原创 2013-07-04 11:04:30 · 1515 阅读 · 0 评论 -
IOS设计模式学习(15)访问者
1 前言 在软件设计中,如果架构师为了扩展类的功能而往一个类里塞进了太多方法,类就会变得极为复杂。更好的做法是创建外部的类来扩展他,而对原始代码不做太多改动。 访问者(Visitor)模式可以用日常生活中得例子描述一下。你不会去学习修管子(即向类中添加更多的方法),所以你叫来管道工(“访问者”)。他来了就会按门铃,你开门让他进来(“接受”),然后他就进来修管子(“访问”)。 2 详述 2.原创 2013-07-03 19:47:20 · 1417 阅读 · 0 评论 -
IOS设计模式学习(18)模板方法
1 前言 模板方法模式是面向对象软件设计中一种非常简单的设计模式。其基本思想是在抽象类的一个方法定义“标准”算法。在这个方法中调用的基本操作由子类重载予以实现。这个方法成为“模板”。因为方法定义的算法缺少一些特有的操作。 2 详述 2.1 简述 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使子类可以重定义算法的某些特定步骤而不改变该算法的结构。 2.2 何时使用 (1)原创 2013-07-04 10:38:57 · 1770 阅读 · 0 评论 -
IOS设计模式学习(21)享元
1 前言 在面向对象软件设计中,利用公共对象不仅能节省资源还能提高性能。共享的对象只能提供某些内在的信息,而不能用来识别对象。专门用于设计可共享对象的一种设计模式叫做享元模式(Flyweight pattern)。 2 详述 2.1 简述 实现享元模式需要两个关键组件,通常是可共享的享元对象和保存他们的池。某种中央对象维护这个池,并从它返回适当的实例。 运用共享技术有效地支持大量细粒度的原创 2013-07-04 15:30:15 · 1842 阅读 · 0 评论 -
IOS设计模式学习(22)代理
1 前言 代理的一个常见用处是作为一个轻量的替身对象,它允许客户端首先访问某些廉价的信息或功能。直到值得或需要使用“真货”的时候,当用户愿意为真正的,高价的会员资格付费的时候,代理会敞开大门让用户访问更多只对付费会员开放的功能。 从这一思想细化而来的一种设计模式叫做代理模式。 2 详述 2.1 简述 为其他对象提供一种代理以控制对这个对象的访问。 2.2 代理分类 (1)远程代理原创 2013-07-04 16:59:30 · 1747 阅读 · 0 评论 -
IOS设计模式学习(16)装饰
1 前言 在面向对象软件中,向对象添加“东西”(行为),而不破坏其原有风格,因此增强了的对象是同一个类的加强版。任何“增强”均可以动态添加和删除。我们把这个设计模式叫做“装饰”,装饰对象可以附加到另一个装饰对象,也可以附加到原始对象,对其功能进行扩展,同时保留原始行为不受影响。 2 详述 2.1 简述 动态的给一个对象太添加一些额外的职责。就扩展功能来说,装饰模式相比生成子类更为灵活。原创 2013-07-03 20:35:21 · 1715 阅读 · 0 评论 -
IOS设计模式学习(14)迭代器
1 前言 在面向对象中,针对抽象集合迭代行为的设计模式称为迭代器。 2 详述 2.1 简述 迭代器提供了一种顺序访问聚合对象(集合)中元素的方法,而无需暴露结构的底层表示和细节。便利集合中元素的只能从集合本身转移到迭代器对象。迭代器定义了一个用于访问集合元素并记录当前元素的接口。不同的迭代器可以执行不同的遍历策略。 提供一种方法顺序访问一个聚合对象中得各个元素,而又不需暴露该对象的内部表原创 2013-07-03 19:30:59 · 1797 阅读 · 0 评论 -
设计模式-代理模式
1 上篇回顾 很久没有更新设计模式系列的文章了,有了很多热心朋友的反馈,我决定继续将这个系列赶快写完,最近由于过年了,有很多相关的事宜要做,所以 没有时间来写,也是对大家的说下抱歉,感觉写文章的时间越来越少了,不过我会努力,尽快将这个系列写完,与大家共勉,希望大家有什么意见或建议, 都可以帮我提出来,我好改进,谢谢!。 本文主要是讲述设计模式中的结构性模式中的转载 2013-05-24 09:56:50 · 1246 阅读 · 0 评论 -
IOS设计模式学习(4)工厂方法
1 前言 几乎在每个面向对象语言的应用程序中都能看到工厂方法。工厂方法是抽象工厂方法的组成部分。对象工厂与生产有形产品的真实工厂类似,比方说:你让工厂给你生产产品,你给他们发送一个“生产产品”的消息。工厂就会按照相应的“生产产品”的协议,启动器生产线。过程结束后,就会返回所生产的特定类型的产品。我们把“生产”这个词称作工厂方法,因为他是命令生产者(工厂)得到想要的产品的方法。 今天我们就来学习原创 2013-06-25 20:33:55 · 2319 阅读 · 0 评论 -
IOS设计模式学习(3)原型模式
1 前言 在许多面向对象的应用程序中,有些对象的创建代价过于大或者过于复杂。要是可以重建相同的对象并作轻微的改动,事情会容易许多。我们可以通过轻微的改动重用已有的对象,以适应程序中的特定情况。今天我们就来学习一下该模式。 2 详述 2.1 定义 应用于“复制”操作的模式成为原型(Prototype)模式。复制(cloning)指用同一模具生产一系列的产品。模具所基于的物品称为原型。尽管产品原创 2013-06-25 19:49:20 · 2018 阅读 · 0 评论 -
IOS设计模式学习(2)热身
1 前言 这节我们将用一个简单的应用:绘图应用,我们叫他TouchPainter。来展示设计模式和最佳做法,希望能从中得到启发。 2 详述 2.1 设计过程中的3个重要里程碑 2.1.1 想法的概念化 汇集有关TouchPainter应用的一些基本需求和用例,比如用户应该怎样使用,以及用户使用时的体验。 2.1.2 界面外观的设计 让开发人员探讨那些UI要素可以合乎逻辑地组合在一起,原创 2013-06-25 19:25:36 · 1577 阅读 · 0 评论 -
IOS设计模式学习(6)生成器
1 前言 有时候,构建某些对象有多种不同方式。如果这些逻辑包含在构建这些对象的类中的单一方法中,构建的逻辑会非常荒唐(例如,针对各种构建需求的一大片嵌套if-else或者switch-case语句)。如果能把构建过程分解为:客户-指导者-生成器(client-director-builder)的关系,那么过程将更容易管理与复用。针对此类关系的设计模式成为生成器。 2 详述 2.1 简述 除原创 2013-06-28 18:41:19 · 1835 阅读 · 0 评论 -
IOS设计模式学习(7)单例
1 前言 数学与逻辑学中,singleton定义为“有且仅有一个元素的集合”。因此不管袋子有多大,每次从里面取出弹子的时候,拿到的都是同一个。 2 详述 2.1 简述 面向对象应用程序中的单例类(singleton class)总是返回自己的同一个实例。它提供了对象所提供的资源的全局访问点。与这类设计相关的设计模式称为单例模式。 用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生原创 2013-06-28 19:38:57 · 1481 阅读 · 0 评论 -
IOS设计模式学习(5)抽象工厂
1 前言 抽象工厂提供了一个接口,用于创建一系列有关联或者相互依存的对象,而不必指定其具体类或其创建的细节。客户端与从工厂得到的具体对象之间没有耦合。 2 详述 2.1 简述 Client只知道AbstractFactory和AbstractProduct,每个工厂类中,结构与实际操作的细节按照黑箱对待。甚至产品也不知道谁将负责创建他们。只有具体工厂知道为客户端创建什么,如何创建。这个模式原创 2013-06-28 14:19:54 · 2085 阅读 · 0 评论 -
IOS设计模式学习(10)外观
1 前言 很多旧的面向对象应用程序中,可能有许多类分散于带有各种功能的系统之中。要把这些类用于某个功能,需要知道全部细节才能在一组算法中使用他们。如果从逻辑上将其中一些类组合成一个简化的接口,可以让这些类更易于使用。为子系统中知足不同接口提供统一接口的一种方式成为外观模式。 2 详述 2.1 简述 外观模式为子系统中知足不同接口提供统一接口。外观定义了上层接口,通过降低复杂度和隐藏子系统间原创 2013-07-03 10:25:51 · 1402 阅读 · 0 评论 -
IOS设计模式学习(9)桥接
1 前言 如果想要设计在不同操作系统上显示同一类型窗口的接口。多数时候,基本的窗口由线和矩形构成。操作系统A画线和矩形的方式不同于操作系统B。如果对每个类型的窗口都进行具体的实现,激增的类层次结构会大得惊人。解决这个问题的一个方法是,从针对不同操作系统的每个实现中,分离出不同窗口类型的抽象。帮助解决这一设计问题的设计模式称为桥接(Bridge)模式。 2 详述 2.1 简述 桥接模式的目的原创 2013-07-02 20:55:36 · 1854 阅读 · 0 评论 -
IOS设计模式学习(8)适配器
1 前言 在面向对象软件设计中,有时候我们想把有用而经过精心测试的类,用于应用程序的其他新领域。但是,新功能需要新接口,而新接口与要复用的现有类不一致的情况非常普遍。我们不想为新的接口而重写可靠的类。 已有的类与新的接口之间不兼容的问题相当普遍,人们已为它找到了一个解决方案。这个解决方案广为使用,最终被编入设计模式,成为适配器。 2 详述 2.1 简述 适配器用于连接两种不同类型的对象,原创 2013-07-02 11:24:06 · 1727 阅读 · 0 评论 -
IOS设计模式学习(23)备忘录
1 前言 2 详述 3 结语原创 2013-07-04 19:07:35 · 1425 阅读 · 0 评论