作用: 为其他对象提供一种代理以控制对这个对象的访问。 UML结构图: 抽象基类: 1)Subject:定义了Proxy和RealSubject的公有接口,这样就可以在任何需要使用到RealSubject的地方都使用Proxy. 解析: Proxy其实是基于这样一种时常使用到的技术-某个对象直到它真正被使用到的时候才被初始化,在没有使用到的时候就暂时用Proxy作一个 发布时间:2012-06-29 作者: 佚名技术 views(225)
作用: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 UML结构图: 抽象基类: 1)AbstractClass:抽象基类,定义算法的轮廓 解析: TemplateMethod 的关键在于在基类中定义了一个算法的轮廓,但是算法每一步具体的实现留给了派生类.但 发布时间:2012-06-29 作者: 佚名技术 views(174)
作用: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. UML结构图: 解析: Memento模式中封装的是需要保存的状态,当需要恢复的时候才取出来进行恢复.原理很简单,实现的时候需要注意一个地方:窄接口和宽接口.所谓的宽接口就是一般意义上的接口,把对外的 发布时间:2012-06-29 作者: 佚名技术 views(250)
作用: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. UML结构图: 抽象基类: 1)Handler:定义一个处理请求的接口,在图中这个接口就是HandleRequset函数,这个类同时有一个指向Handler对象的指针,指向后续的处理请求的对象 发布时间:2012-06-29 作者: 佚名技术 views(236)
作用: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. UML结构图: 解析: Visitor模式把对结点的访问封装成一个抽象基类,通过派生出不同的类生成新的访问方式.在实现的时候,在visitor抽象基类中声明了对所有不同结点进行访问的接口函数,如图中的VisitConcreate 发布时间:2012-06-29 作者: 佚名技术 views(186)
排序一直是数据结构中的常用算法,STL提供的排序算法非常丰富,如何有效 使用就值得探讨。在网上没有找到条款31的翻译,于是我自己翻译了。-- Winter 如何进行排序?让我数数有几种方法。 一旦程序员需对容 器元素进行排序,sort算法马上就会出现在他的脑海(可能有些程序员会想到 qsort,但详细阅读条款46后,他们会放弃使 发布时间:2012-06-29 作者: 佚名技术 views(466)
作用: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作. UML结构图: 解析: Comnand模式的思想是把命令封装在一个类中,就是这里的Command基类,同时把接收对象也封装在一个类中就是这里的Receiver类中,由调用这个命令的类也就是这里的Invoker类来调用.其实, 发布时间:2012-06-29 作者: 佚名技术 views(236)
一个月下来,把常见的20个设计模式好好复习并且逐个用C++实现了一遍,收获还是很大的,很多东西看上去明白了但是真正动手去做的时候发现其实还是不明白--我深知这个道理,于是不敢怠慢,不敢写什么所谓的解释原理的伪代码,不敢说所谓的知道原理就可以了....因为我知道,我还还没有资格说这个话,至少对于设计模式而言我还是一个初学 发布时间:2012-06-29 作者: 佚名技术 views(538)
|