IOS设计模式学习(20)命令】的更多相关文章

前言 这次要介绍的是命令模式,这也是一种行为型模式.最近反正没有面试机会我就写博客呗,该投的简历都投了.然后就继续看书,其实看书也会给自己带来成就感,原来以前不明白的东西,书上已经给彻底的介绍清楚了,然后读到完了就有一种恍然大悟的感觉,怕自己理解的有问题,还要去网上搜各种答案来确保自己的理解确实没问题.最近看到一句话感觉很有道理:读书最好的目的在于,你会发现凭借自身阅读构建起来的小世界,能以体恤式的温柔,消除自身的苦难. 命令模式 概念介绍 命令模式:将一个请求封装为一个对象,从而使我们可用不同…
1 前言 在面向对象中,把指令封装在各种命令对象中.命令对象可以被传递而且在指定时刻被不同的客户端复用.这一概念精心设计而来的设计模式叫做命令(Command)模式. 2 详述 2.1 简述 命令对象封装了如何对目标执行指令的信息,因此客户端或调用者不必了解目标的任何细节,却仍可以对他执行任何已有的操作.通过把请求封装成对象,客户端可以把它参数化并置入对类或日志中,也能够支持可撤销的操作.命令对象将一个或多个动作绑定到特定的接收器.命令模式消除了作为对象的动作和执行它的接收器之间的绑定. 将请求…
一.命令模式的定义 命令模式属于对象的行为型模式.命令模式是把一个操作或者行为抽象为一个对象中,通过对命令的抽象化来使得发出命令的责任和执行命令的责任分隔开.命令模式的实现可以提供命令的撤销和恢复功能. 二.我们来看一个类图 从命令模式的结构图可以看出,它涉及到五个角色,它们分别是: 客户角色:发出一个具体的命令并确定其接受者. 命令角色:声明了一个给所有具体命令类实现的抽象接口 具体命令角色:定义了一个接受者和行为的弱耦合,负责调用接受者的相应方法. 请求者角色:负责调用命令对象执行命令. 接…
一.概述 命令模式 二.代码 1.Client.java public class Client { public void request(Server server){ server.addCommand(new TextCommand()); server.addCommand(new ImageCommand()); server.doSomething(); } } 2.Server.java public class Server { private List<Command> c…
1 前言 模板方法模式是面向对象软件设计中一种非常简单的设计模式.其基本思想是在抽象类的一个方法定义“标准”算法.在这个方法中调用的基本操作由子类重载予以实现.这个方法成为“模板”.因为方法定义的算法缺少一些特有的操作. 2 详述 2.1 简述 定义一个操作中算法的骨架,而将一些步骤延迟到子类中.模板方法使子类可以重定义算法的某些特定步骤而不改变该算法的结构. 2.2 何时使用 (1)需要一次性实现算法的不变部分,并将可变得行为留给子类来实现. (2)子类的共同行为应该被提取出来放到公共类中,以…
1 前言 面向对象软件设计中,我们可以把相关算法分离为不同的类,成为策略.与这种做法有关的一种设计模式成为策略模式. 2 详述 2.1 简述 策略模式中得一个关键角色是策略类,它为所有支持的或相关的算法声明了一个共同接口.另外,还有使用策略接口来实现相关算法的具体策略类.场景类的对象配置有一个具体策略对象的实例,场景对象使用策略接口调用由具体策略类定义的算法. 定义一系列算法,把他们一个个封装起来,并且使他们可相互替换,本模式使得算法可独立于使用它的客户而变化. 2.2 何时使用 (1)一个类在…
1 前言 在面向对象软件设计中,有时候我们想把有用而经过精心测试的类,用于应用程序的其他新领域.但是,新功能需要新接口,而新接口与要复用的现有类不一致的情况非常普遍.我们不想为新的接口而重写可靠的类. 已有的类与新的接口之间不兼容的问题相当普遍,人们已为它找到了一个解决方案.这个解决方案广为使用,最终被编入设计模式,成为适配器. 2 详述 2.1 简述 适配器用于连接两种不同类型的对象,使其毫无问题地协同工作.有时它也称为“包装器”(wrapper).适配器的主要作用是把被适配者的行为传递给管道…
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…