IOS设计模式学习(19)策略】的更多相关文章

1 前言 面向对象软件设计中,我们可以把相关算法分离为不同的类,成为策略.与这种做法有关的一种设计模式成为策略模式. 2 详述 2.1 简述 策略模式中得一个关键角色是策略类,它为所有支持的或相关的算法声明了一个共同接口.另外,还有使用策略接口来实现相关算法的具体策略类.场景类的对象配置有一个具体策略对象的实例,场景对象使用策略接口调用由具体策略类定义的算法. 定义一系列算法,把他们一个个封装起来,并且使他们可相互替换,本模式使得算法可独立于使用它的客户而变化. 2.2 何时使用 (1)一个类在…
转载地址:http://www.cnblogs.com/zhili/p/StragetyPattern.html 一.引言 本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解. 二.策略者模式介绍 2.1 策略模式的定义 在现实生活中,策略模式的例子也非常常见,例如,中国的所得税,分为企业所得税.外商投资企业或外商企业所得税和个人所得税,针对于这3种所得税,针对每种,所计算的方式不同,个人所得税有个人所得税的计算方式,而企业所得…
一.策略模式定义: 定义一些列的算法/规则,将它们封装起来,使得它们可以互相替换/组合使用.其目的在于将算法/规则封装起来,将算法/规则的使用与实现分离出来. 通过策略模式,可以减少算法计算过程中大量的if-else分支,并提高复用性. 一个策略模式的程序至少由两部分组成,一个是一组策略类,策略类封装了具体算法,并负责具体的实现过程:第二个部分是环境类context,context接受客户的请求,随后将请求委托给具体的某一个策略类.context中需要有一个变量来保存对对象的引用. 二.java…
1 前言 模板方法模式是面向对象软件设计中一种非常简单的设计模式.其基本思想是在抽象类的一个方法定义“标准”算法.在这个方法中调用的基本操作由子类重载予以实现.这个方法成为“模板”.因为方法定义的算法缺少一些特有的操作. 2 详述 2.1 简述 定义一个操作中算法的骨架,而将一些步骤延迟到子类中.模板方法使子类可以重定义算法的某些特定步骤而不改变该算法的结构. 2.2 何时使用 (1)需要一次性实现算法的不变部分,并将可变得行为留给子类来实现. (2)子类的共同行为应该被提取出来放到公共类中,以…
1 前言 在面向对象软件设计中,有时候我们想把有用而经过精心测试的类,用于应用程序的其他新领域.但是,新功能需要新接口,而新接口与要复用的现有类不一致的情况非常普遍.我们不想为新的接口而重写可靠的类. 已有的类与新的接口之间不兼容的问题相当普遍,人们已为它找到了一个解决方案.这个解决方案广为使用,最终被编入设计模式,成为适配器. 2 详述 2.1 简述 适配器用于连接两种不同类型的对象,使其毫无问题地协同工作.有时它也称为“包装器”(wrapper).适配器的主要作用是把被适配者的行为传递给管道…
1 前言 在面向对象中,把指令封装在各种命令对象中.命令对象可以被传递而且在指定时刻被不同的客户端复用.这一概念精心设计而来的设计模式叫做命令(Command)模式. 2 详述 2.1 简述 命令对象封装了如何对目标执行指令的信息,因此客户端或调用者不必了解目标的任何细节,却仍可以对他执行任何已有的操作.通过把请求封装成对象,客户端可以把它参数化并置入对类或日志中,也能够支持可撤销的操作.命令对象将一个或多个动作绑定到特定的接收器.命令模式消除了作为对象的动作和执行它的接收器之间的绑定. 将请求…
1 前言 在面向对象软件设计中,利用公共对象不仅能节省资源还能提高性能.共享的对象只能提供某些内在的信息,而不能用来识别对象.专门用于设计可共享对象的一种设计模式叫做享元模式(Flyweight pattern). 2 详述 2.1 简述 实现享元模式需要两个关键组件,通常是可共享的享元对象和保存他们的池.某种中央对象维护这个池,并从它返回适当的实例. 运用共享技术有效地支持大量细粒度的对象. 2.2 何时使用 (1)应用程序使用很多对象: (2)在内存中保存对象会影响内存性能: (3)对象的多…
1 前言 面向对象的设计鼓励把行为分散到不同对象中.这种分散可能导致对象之间的相互关联.在最糟糕的情况下,所有对象都彼此了解并相互操作.但是增加的相互关联又减少了获得的益处.增加的关联似的对象很难或不能在不依赖其他对象的情况下工作.应用程序的整体行为可能难以进行任何重大修改,因为行为分布于许多对象.于是结果可能是创建越来越多的子类,以支持应用程序的任何新行为. 2 详述 2.1 简述 中介者模式用于定义一个集中的场所,对象间的交互可以在一个中介者对象中处理.其他对象不必彼此交互,因此减少了他们之…
1 前言 有时候,构建某些对象有多种不同方式.如果这些逻辑包含在构建这些对象的类中的单一方法中,构建的逻辑会非常荒唐(例如,针对各种构建需求的一大片嵌套if-else或者switch-case语句).如果能把构建过程分解为:客户-指导者-生成器(client-director-builder)的关系,那么过程将更容易管理与复用.针对此类关系的设计模式成为生成器. 2 详述 2.1 简述 除了客户和所需要的产品,生成器模式包含连个角色:Director(指导者)和Builder(生成器).Buil…
1 前言 数学与逻辑学中,singleton定义为“有且仅有一个元素的集合”.因此不管袋子有多大,每次从里面取出弹子的时候,拿到的都是同一个. 2 详述 2.1 简述 面向对象应用程序中的单例类(singleton class)总是返回自己的同一个实例.它提供了对象所提供的资源的全局访问点.与这类设计相关的设计模式称为单例模式. 用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问. 这个方法应该是静态方法,因为让类的实例去生成另一个唯一实例毫无意义. 2.2 何时使用单例模式…