摘要: 定义:迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 即不论对象内部的元素是以数组存放还是容器类型存放,都可以对外表现为迭代器形式。#include <iostream>#include <string>#include <assert.h>using namespace std;class MenuItem{public: MenuItem(){} MenuItem( string &name, string& des, bool ck, float pric ); ~MenuItem(){} string 阅读全文
posted @ 2013-05-12 00:24 brackenbo 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 此时的模板模式不同于C++中自带的模板泛型。模板方法模式——在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。下面,是大家很熟悉的一段代码——《Head First 设计模式》中第8章模板方法模式中星巴兹咖啡因饮料代码的C++版。#include <iostream>using namespace std;class Coffee{public: Coffee(){} ~Coffee(){} void PrepareRecipe() { BoilWater(); ... 阅读全文
posted @ 2013-05-10 20:23 brackenbo 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 定义:外观模式提供了统一的接口,用来访问子系统中的一群接口。跟适配器模式是为了符合用户的意图而改变接口不同,外观模式只简化子系统的一群接口而已。class CPU {public: void freeze() { ... } void jump(long position) { ... } void execute() { ... }} class Memory {public: void load(long position, char* data) { ... }} class HardD... 阅读全文
posted @ 2013-05-08 22:13 brackenbo 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 作为非计算机专业的苦比,需要从头温习一下有点模糊的排序算法: (一)插入排序 一般的算法教科书上,第一个介绍的排序算法就是插入排序,这属于内排序( 数据量小,数据全部位于内存中)。 a. 直接插入排序 依次将待排序的记录,按照关键字的大小,插入到一个已经排序好的序列中。void InsertSort( int *pArray, int arrayLen ){ int temp = 0; int j = 0, i = 0; for ( i = 0; i < arrayLen; ++i) { temp = pArray[i]; ... 阅读全文
posted @ 2013-04-24 12:23 brackenbo 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 为了安装emacs的插件,先安装个git,会方便很多。 但是,作为一个身处祖国怀抱的苦逼程序员,你只能通过其他一些途径来获取一些非常有用的东西,比如git就是其中一个。本处默认你有vpn,可以下载到git的源文件,或者可以通过其他linux的安装命令来安装git。 如果下载到git源文件,直接编译,./configure,然后make,然后make install 。之后还需要添加到环境变量中去。 环境变量添加: 1.可以直接在shell敲入命令:export PATH=$PATH:/home/usr/bin 上面的/home/usr/bin是我通过find -name git找到git... 阅读全文
posted @ 2013-04-23 23:08 brackenbo 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 这么久了,从来没有在工具上面花太多的时间,VIM用过,emacs用过,现在发现其实还有比较好用,容易上手的sublime。可是在很多自认为有技术含量的公司,却对这个工具比较看重。也是,公欲善其事,必先利其器。就发个狠,搞定emacs得了。 安装就不用说了,地球人都会的,当然是在linux下。unbuntu里面有apt-get,opensuse本来是有yapper的,可是懒得去找安装源,就直接下载tar.gz源码,编译即可。 今天主要从别人处拷一点配置文件的处理: 1. 首先,安装完emacs,在root路径下没有.emacs文件,这个需要自己创建。里面的内容呢,直接从别人处拷一个,先尝鲜一下. 阅读全文
posted @ 2013-04-23 21:54 brackenbo 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 5.1 序列类型 5.2字符串类型5.5XRangeType 类型5.6缓冲区类型5.7映射类型5.8可调用类型 可调用类型表示所有允许以函数方式调用的对象。它包括用户定义函数、用户定义方法,内建函数、内建方法、classic类及其实例、new-style 类及其实例。5.8.1用户定义函数 用户调用函数是在module层由def或者lambda创建的可调用对象,因为函数也是一类对象。可以赋值给其他变量,也可以放入列表,元组,字典中。例如:def ShowAdd( x, y ): print "%s + %s = %s"% ( str( x ), str( y ), str 阅读全文
posted @ 2013-04-19 14:22 brackenbo 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器(Adapter)模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。也叫包装器(Wrappter)。有两类适配器模式: ·对象适配器模式 - 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。 ·类适配器模式 - 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。 阅读全文
posted @ 2013-04-14 14:04 brackenbo 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 命令模式的定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 怎么理解呢,举个遥控器的例子,但是这个 遥控器上面的按钮,跟普通不一样。简单来说,就是有分别控制电视开关,电灯开关,风扇开关,空调开关等的按钮。普通情况下,如果你对遥控器编程,那么就会通过遥控器对象,来分别调用电视对象的开关方法,或者风扇对象的开关方法,或者空调对象的开关方法。这样,就会有个if 语句来判断,是调用哪一个对象的方法。命令模式,就是将此时的开关电器的方法抽象出来,进行封装。只要遥控器中存放了开关电器的请求的对象就可以了。代码如下:#include . 阅读全文
posted @ 2013-04-13 22:30 brackenbo 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 具体的执行过程,摘自维基百科,很容易懂。http://zh.wikipedia.org/wiki/AVL%E6%A0%91#include <stdio.h>#include <malloc.h>#include <assert.h>typedef int ElementType;typedef struct AvlNode{ /* data */ ElementType element; struct AvlNode* leftChild; struct AvlNode* rightChild;} AvlNode;int max( int a, int b 阅读全文
posted @ 2013-04-12 10:19 brackenbo 阅读(155) 评论(0) 推荐(0) 编辑