上一页 1 2 3 4 5 6 7 8 9 ··· 28 下一页
摘要: iterator(迭代器)——对象行为型模式1.意图提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。2.别名游标(cursor)3.动机一个聚合对象,应该提供一种方法来让别人可以访问它的列表,而又不暴露它的内部结构。此外,针对不同需要,可能要以不同的方式遍历这个列表。但是即使可以预见到所需的那些遍历操作,你可能也不希望列表的接口中充斥着各种不同遍历的操作。有时还可能需要在同一列表上同时进行各个遍历。迭代器模式都可以解决这些问题。这一模式的关键思想是将对列表的访问和访问从列表对象中分离出来并且放入一个迭代器对象中。迭代器类定义了一个访问该列表元素的接口。迭代器对象负责跟 阅读全文
posted @ 2012-05-21 15:19 w0w0 阅读(282) 评论(0) 推荐(0)
摘要: 卡特兰数研究问题:研究一串n个矩形加全部括号的方案数当n=1时,只有一种方式来加全部括号矩阵当n>=2时,一个加全部括号的矩阵就是两个加全部括号的矩阵子方案数的乘积,而且这两个子方案的分裂可能发生在第k个和第k+1个矩阵之间,其中k=1,2..n-1因此可得递归式:h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2)递归式:h(n)=((4*n-2)/(n+1))*h(n-1);该递推关系的解为:h(n)=C(2n,n)/(n+1) (n=1,2,3,...)这个数就是卡特兰数。在网上找到的卡特兰的介绍: Catal 阅读全文
posted @ 2012-05-21 12:50 w0w0 阅读(298) 评论(0) 推荐(0)
摘要: Interpreter(解释器)——类行为型模式1.意图给定一个语言,定义它的一种文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2.动机如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。解释器模式描述了如何让为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这个句子。3.适用性当有一个语言需要解释执行,并且你可以将该语言中的一个句子表示为一个抽象语法树时,可使用解释器模式,而当存在以下情况时该模式的效果最好:1)该文法简单,对于复杂的文法 阅读全文
posted @ 2012-05-21 10:53 w0w0 阅读(275) 评论(0) 推荐(0)
摘要: command(命令模式)——对象行为型模式1.意图将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,请求配对或者记录请求日志,以及支持可撤销的操作。2.动机有时必须向某对象递交请求,但是并不知道关于被请求的操作或者请求的接受者的任何信息。命令模式通过将请求本身变成一个对象可向未指定的应用对象提出请求。这个对象可被储存并且可以像其他对象一样传递。关键是一个抽象的command类,定义了一个执行操作的接口,其最简单的形式是一个抽象的execute操作。具体的command子类将接受者作为其一个实例变量,并实现execute操作,指定接受者采取的动作。而接受者有执行该请求所需的具 阅读全文
posted @ 2012-05-20 21:25 w0w0 阅读(212) 评论(0) 推荐(0)
摘要: 行为模式行为模式设计到算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述他们之间的通信模式。这些模式刻画了在运行时难以跟踪的复杂控制流。他们将你的注意力从控制流转移到对象间的联系方式上来。行为类模式使用继承机制在类间分派行为。行为对象模式使用对象复合而不是继承。重点是对等的对象如何相互了解对方。chain of responsibility(职责连模式)——对象行为型模式1.意图使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间有耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。2.动机将提交请求的对象与处理的对象解耦。给多个对象处理一个请求 阅读全文
posted @ 2012-05-20 19:22 w0w0 阅读(233) 评论(0) 推荐(0)
摘要: proxy(代理)——对象结构型模式1.意图为其他对象提供一种代理以控制这个对象的访问2.动机对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化。3.适用性在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用proxy模式1)远程代理为一个对象在不同的地址空间提供局部代表2)虚代理根据需要创建开销很大的对象3)保护代理控制对原始对象的访问。保护代理用于对象应该有不同的访问权限的时候。4)智能指引取代了简单指针,在访问对象的时候执行一些附加的操作4.结构参考:http://www.cnblogs.com/rush/archive/2011/06/19/ 阅读全文
posted @ 2012-05-20 14:54 w0w0 阅读(221) 评论(0) 推荐(0)
摘要: flyweight(享元模式)——对象结构型模式1.意图运用共享技术有效地支持大量细粒度对象2.动机flyweight作为一个共享对象,可以同时在多个场景中使用,并且在每个场景中flyweight都可以作为一个独立的对象。flyweight不能为他所运行的场景做出任何假设,这里的关键概念是内部状态和外部状态之间的区别。内部状态存储于flyweight中,包含了flyweight场景的信息,这些信息使得flyweight可以被共享。外部状态取决于flyweight场景,并且根据场景而变化,因此不可以被共享。用户对象负责在必要的时候将外部状态传递给flyweight。flyweight通常可以对那 阅读全文
posted @ 2012-05-20 13:49 w0w0 阅读(209) 评论(0) 推荐(0)
摘要: facade(外观)——对象结构型模式1.意图为子系统中的一组接口提供一个一致的界面,facade定义了一个高层接口,这个接口使得这一子系统更加容易使用。2.动机将一个系统划分为若干个子系统有利于降低系统的复杂性,一个常见的设计目标是使子系统之间的通信和相互依赖关系达到最小。达到该目标的途径之一就是引入一个facade对象,为子系统中比较一般的设施提供了一个单一而简单的界面。3.适用性1)当你要为一个复杂子系统提供一个简单接口时,子系统往往因为不断演化而变得越来越复杂,大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但是这也给那些不需要定制子系统的用户 阅读全文
posted @ 2012-05-20 10:15 w0w0 阅读(327) 评论(0) 推荐(0)
摘要: decorator(装饰)——对象结构型模式1.意图动态地给一个对象添加一些额外的职责,就功能来说,decorator比生成子类更灵活2.别名包装器wrapper3.动机有时候我们希望给某个对象而不是整个类添加一些功能。使用继承机制是添加功能的一种有效途径,但是不够灵活,因为用户不能控制对组件增加功能的时机和方式。一种比较灵活的方式就是把一个组件嵌入到另一个对象中,由这个对象来增加新的功能。我们称这个嵌入的对象为装饰,这个装饰与他所装饰的组件接口一致,因此它对使用该组件的客户透明。它将客户的请求转发给该组件,并且可能在转发前后执行一些额外的动作。透明性可以使你递归嵌套多个装饰。4.适用性1)在 阅读全文
posted @ 2012-05-19 22:09 w0w0 阅读(289) 评论(0) 推荐(0)
摘要: composite(组合)——对象结构型模式1.意图将对象组合成树形结构以表示“部分-整体”的层次结构,composite使得用户对单个对象和组合对象的使用具有一致性。2.动机用户可以组合多个简单组件以形成一些较大的组件,这些组件又可以组合成更大的组件。如果这些类的代码必须区分简单组件和容器,那么就会使程序更加复杂,而大多数情况下用户认为他们是一样的,composite模式描述了如何使用递归组合,使得用户不必对这些类进行区别。3.适用性你想表示对象的部分-整体层次结构你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象4.结构参考:http://www.cnblogs. 阅读全文
posted @ 2012-05-19 20:27 w0w0 阅读(322) 评论(0) 推荐(0)
摘要: bridge(桥接)——对象结构型模式1.意图将抽象部分与它的实现部分分离,使他们都可以独立的变化2.别名handle/body3.动机当一个抽象可以有多个实现时,通常用继承来协调他们。抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。但是此方法有时候不够灵活,继承机制将抽象部分和实现部分固定在一起,难以独立进行修改扩充和重用。bridge将抽象和实现分开,在中间起到了桥梁的作用,使他们可以独立变化。4.适用性1)你不希望在抽象和实现部分之间有一个固定的绑定关系,在程序运行时刻实现部分应该可以被选择或者切换。2)类的抽象以及他的实现部分都应该可以通过生成子类的方法加以扩充。3)对一个 阅读全文
posted @ 2012-05-19 17:46 w0w0 阅读(272) 评论(0) 推荐(0)
摘要: 结构型模式:结构型模式设计到如何组织类和对象以获得更大的结构。结构型类模式:采用继承机制来组合接口或实现。简单的例子是采用多重继承,这一模式尤其有助于多个独立开发的类库协同工作。结构型对象模式:不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法,因为可以在运行时刻改变对象组合关系,所以有更大的灵活性。Adapter(适配器)——类对象结构型模式1.意图将一个类的结构转换成客户希望的另外一个接口。adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。2.别名包装器wrapper3.动机有时候,为了复用而设计的工具想不能够被复用的原因仅仅是 阅读全文
posted @ 2012-05-19 10:41 w0w0 阅读(349) 评论(0) 推荐(0)
摘要: singleton单件模式——对象创建型模式1.意图保证一个类只有一个实例,并且提供一个全局的访问点2.动机让类自身负责保存他的唯一实例。这个类可以保证没有别的实例可以被创建,并且可以提供一个访问该实例的方法3.适用性当类智能有一个实例而且客户可以从一个众所周知的访问点访问它时当这个唯一的实例应该是通过子类化可扩展时,并且客户应该无需修改代码就可以使用一个扩展的实例时。4.结构5.参与者singleton定义一个instance操作,允许客户访问它的唯一实例,instance是一个类操作可能负责创建他自身的唯一实例6.协作客户只能通过instance访问类的唯一实例7.效果1)对唯一实例的受控 阅读全文
posted @ 2012-05-18 22:36 w0w0 阅读(170) 评论(0) 推荐(0)
摘要: Prototype原型模式——对象创建型模式1.意图用原型示例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。“创建一个对象,用一个原型指定它的种类,拷贝只是一种手法,不是目的。”2.适用性当一个系统应独立于它的产品创建、构成和表示时要用prototype模式要实例化的类在运行时刻指定的为了避免创建一个与产品类层次平行的工厂类层次时当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并且克隆他们可能比每次用合适的状态手工实例化更加方便一些。3.结构参考:http://www.cnblogs.com/hjqxaly/archive/2010/09/09/1822460.htm 阅读全文
posted @ 2012-05-18 21:38 w0w0 阅读(132) 评论(0) 推荐(0)
摘要: Factory method工厂方法——对象创建型模式1.意图定义一个用于创建对象的接口,让子类决定实例化哪个类。使一个类的实例化延迟到其子类2.别名虚构造器(virtual constructor)3动机框架使用抽象类定义和维护对象之间的关系。这些对象的创建通常也由框架负责。一个框架中有两个抽象类Application和Document,因为被实例化的Document子类和特定应用相关,所以Application不知道哪个Document类将被实例化。仅知道一个文档何时被创建,但是不知道哪一种Document被创建,就产生了一个问题:框架必须实例化类,但是他只知道不可被实例化的抽象类。App 阅读全文
posted @ 2012-05-18 20:15 w0w0 阅读(214) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 28 下一页