摘要: visitor(访问者)——类行为模式1.意图表示一个作用于某对象结构中的各个元素的操作。他使你可以在不改变各元素的前提下定义作用于这些元素的新操作。2.动机操作需要对不同的数据类型做不同的处理。将每一个类中相关的操作包装成一个对象,并在需要时将此对象传递给当前访问的元素,当元素接收访问者时,向访问者发送一个包含自身类信息的请求。该请求将自身作为一个参数。然后访问者将对这个元素执行操作——这一操作以前是在该元素的类中的。3.适用性1)一个对象结构包含很多对象,他们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作。2)需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而你想避免 阅读全文
posted @ 2012-05-23 20:24 w0w0 阅读(356) 评论(0) 推荐(0)
摘要: template method(模板方法)——类行为模式1.意图定义一个操作中的算法骨架,而将一些步骤延迟到子类中,template method使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤。2.动机通过使用抽象操作定义一个算法中的一些步骤,模板方法确定了他们的先后顺序,但是他允许子类改变具体步骤以满足各自的需求。3.适用性1)一次实现一个算法的不变部分,把可变部分的行为留给子类实现2)各子类中公共的行为应该被提取出来并集中到一个公共的父类中以避免代码重复3)控制子类扩展。模板方法只有在特定点调用hook操作,这样允许子类在这些点上加以扩展。4.结构参考:http://www 阅读全文
posted @ 2012-05-23 16:01 w0w0 阅读(243) 评论(0) 推荐(0)
摘要: 图论算法小结一、图搜索算法1.广度优先搜索 给定图G和特定的原点s,BFS系统的搜索G中的边,以期发现可以从s出发到达的所有顶点,并计算所有这些可达顶点之间的距离。该算法同事还能生成一颗根为s、且包括所有s可达顶点的广度优先树。对s可达的顶点v,广度优先树从s到v的路径对应于图G中s到v的最短路径,即包含边最少的路径。该算法对有向和无向图都适用。以最简单的一维bfs作为模板#include<iostream>#include<queue>using namespace std;//以为的bfs,用step记录从原点开始到每一个点的步数//map记录该点是否被访问过int 阅读全文
posted @ 2012-05-23 09:24 w0w0 阅读(1131) 评论(0) 推荐(0)