- 博客(178)
- 资源 (19)
- 收藏
- 关注
原创 设计模式 - 结构型模式总结
我们介绍完了所有GOF设计模式书上的7种结构型设计模式,又到了总结的时候了。如果回顾一下这7种结构型设计模式,我们会发现有些模式很类似。是的,从结构来看确实很像。但是我们讲设计模式很多时候是从设计者的意图来区分的,单从代码结构来看可能是很类似,但是意图完全不一样。 Adapter,Bridge,FacadeAdapter:目的是为了解决不同接口类库之间不能一起工作的问题。Adapt
2012-11-05 18:01:33 725
原创 设计模式 - 代理模式
代理模式,PROXY。这是一个比较常用的结构型模式。个人比较喜欢这个模式,代理模式一个比较出名的应用就是智能指针。 意图为其他对象提供一个代理以控制对这个对象的访问。 结构图 一眼看去是不是和Decorator(装饰模式)很像?是啊,从结构图看,确实很像,或者说几乎一样。虽说它们的结构图很像,但是它们的意图完全不一样:装饰模式是为了给对象增加功能而代理模式是为了控制
2012-11-05 16:54:26 716
原创 设计模式 - 享元模式
享元模式的英文是flyweight pattern,不知道哪位大哥第一个把flyweight翻译成享元的,真牛,翻译的很形象。个人认为享元模式还是挺复杂的。面向对象编程给我们带来了非常多的好处,但是同时它也有弊端,如果一个系统拥有非常非常多的对象,那么内存消耗会比较大,而且比较难管理。比如:1. 游戏里面的粒子系统,大量的微粒,如果为每个微粒创建一个对象的话,那么对象数量是相当的恐怖;
2012-11-02 16:43:14 890
原创 设计模式 - 外观模式
外观模式还是相当普遍的,先来看看几个例子:1. 一台电脑有很多东西组成,包括硬件,软件。硬件又包含主板,CPU,内存什么的,软件又包含操作系统,操作系统里面又有一大堆非常复杂的驱动,各个驱动之间又有很多关系。那么我们怎么启动这么复杂的一个东西呢?我们所要做的就是按一下电源开关。当用户按下电源开关后,操作系统会把电脑运行起来,中间过程那是相当的复杂。对于用户来说,电源开关就是一个简单使用的接口,
2012-11-02 11:43:13 716
原创 设计模式 - 装饰模式
意图动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 结构图结构图好像和Composite模式有点像。确实是,我们后面再讲Decorator和Composite模式的关系。从结构图中我们可以看出Decorator的子类可以对Component进行一些扩充。这也就是Decorator模式的作用:对一个现有的类进行扩充来满足更多的
2012-11-01 16:23:48 917
原创 C++ 虚析构函数
C++类里面,我们经常可以看到析构函数是虚函数,这个虚函数有什么作用吗?我们可以通过一个很简单的例子来看看虚析构函数的作用。class CBase{public: virtual ~CBase() { printf("CBase::~CBase()\n"); }};class CChild: public CBase{public: virtual ~CChild()
2012-11-01 14:28:04 3478 1
原创 C++类成员冒号初始化以及构造函数内赋值
通常我们对类成员进行“初始化”有两种方式:1. 构造函数后面跟冒号;2. 构造函数里面对成员进行赋值。有些人不太注意这个小细节,或者根本不知道他们的区别,认为两种方式是一样的。这个误解有时可能会对程序带来影响,这里我来介绍一下这两种方式。首先我们看这么一段代码:class A{public: A(int& c) { _a = 1; }protected: in
2012-11-01 11:58:22 43147 18
原创 设计模式 - 组合模式
讲完了适配器和桥接模式,我们这次来看看组合模式(Composite)。 意图将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 结构图从上面的结构图可以看出,Composite聚合了Component,那么也就是说Composite里面可以保存任何Component的子类,比如一个Leaf或者另外一个Co
2012-10-31 18:25:13 1015
转载 volatile 说明 (转载)
C中的volatile用法volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如: volatile int i=10; int j = i;
2012-10-31 15:23:25 689
原创 设计模式 - 桥接模式
桥接模式是结构型模式里面相对复杂的一种模式,但是同时也是很有用的。我们先来考虑这么一种情况(这个例子是设计模式书上的一个例子),Window是一个类,这个类用来画一个窗口。那么我们现在如果要支持XP风格和WIN7风格,应该怎么做呢?通常首先能想到的就是子类化Window,比如增加2个类:WindowsXP和Windows7。然后这2个子类可以各自实现各自的风格,这个没有问题。而且这也是常用办法
2012-10-30 18:24:09 1174 1
原创 设计模式 - 适配器模式
从这个文章开始,我们讲结构型模式。结构型模式涉及到如何组合类和对象以获得更大的结构。先从适配器模式(Adapter)开始。现实生活中,适配器的情况还是挺多的。比如我去年买了个台湾版HTC手机,但是在杭州用不了,因为这个手机的充电器的插头跟插座不匹配,然后我去电脑市场花了5快钱买了个转接头,现在就可以用了。其实这也是一个适配器的例子。这里面,现有的插座就是Adeptee,转接头就是Adapt
2012-10-29 18:49:30 1108 1
原创 Boost - 序列化 (Serialization)
程序开发中,序列化是经常需要用到的。像一些相对高级语言,比如JAVA, C#都已经很好的支持了序列化,那么C++呢?当然一个比较好的选择就是用Boost,这个号称C++准标准库的东西。什么时候需要序列化呢?举个例子,我们定义了一个class,比如:class CCar{public: void SetName(std::string& strName){m_strName = str
2012-10-24 15:24:29 46433 9
原创 设计模式-创建型模式总结
全部五种创建型模式已经介绍完毕了:工厂方法模式,抽象工厂模式,生成器模式,原型模式和单例模式。我始终认为设计模式是一些牛人总结出来的一些经验,我们不必死搬硬套。但是这些设计模式已经这么多年了,经受住了大量的考验。而且大多数人认为是合理的。那么就值得我们借鉴。我本人的日常工作中也大量的用到了这些设计模式。对于创建型模式来说,我用的比较多的是工厂方法模式,生成器模式和单例模式。我个人觉得还
2012-10-23 15:22:59 1040
原创 设计模式-单例模式
创建型模式的最后一个内容是单例模式(singleton)我相信很多人对单例模式都很熟悉,因为这个模式非常普遍。这里我也简单介绍一下。 意图保证一个类仅有一个实例,并提供一个访问它的全局访问点。 结构图单例模式的关键在于2点:1. 构造函数是私有的,也就是说除了这个单例类本身其他人是不可以创建单例类对象的;2. 有一个公有的静态函数(上图中的GetInst()
2012-10-23 14:21:39 991
原创 设计模式-原型模式
这次我们来讲一下原型模式。总体来讲原型模式还是比较简单的。 意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 结构图这个结构图还是挺简单的,Prototype就是产品类。和前面的抽象工厂,工厂方法等模式相比,产品类就增加了一个函数Clone()。我们还是以之前的地形例子来讲解这个模式,先给出类图我这次把CFactory当作原型模式的c
2012-10-23 13:25:32 625
原创 设计模式-生成器模式
前两个文章我介绍了工厂方法模式和抽象工厂模式,这次我来讲一些生成器模式。生成器模式我也用的比较多。5个创建型模式里面,我比较喜欢用工厂方法模式,生成器模式和单例模式。 意图将一个复杂对象的构建与它的表示分开,使得同样的构建过程可以创建不同的表示。 结构图 一眼看去是不是和抽象工厂模式有点像?是啊,我也觉得很像,有什么分别呢?别急,让我先讲一下builder 模
2012-10-22 17:31:49 1028
原创 设计模式-工厂方法模式
小弟我最近重新学习设计模式。经典就是经典,这本书我已经看了至少两遍了,这次重新再看一次,发现又体会到不同的东西了。身边很多朋友都在写博客,那么我也凑凑热闹,一来可以加深自己的学习,二来也可以给朋友们参考参考。限于本人能力有限,如果写的不好的地方请多多包涵,如果有什么理解错误的地方,欢迎指出。好了,废话少说,切入正题。先从创建型模式开始吧。我最熟悉的语言是C++,所以所有的例子都
2012-10-22 13:55:54 1089
原创 设计模式-抽象工厂模式
上次我讲了一下工厂方法模式,这次我来讲一下抽象工厂模式。其实,我在工作当中基本没有用到过抽象工厂模式。我用的比较多的是工厂方法模式。我对抽象工厂模式的理解主要来自《设计模式》这本书。同时也搜索了一些网上的文章。这里我就讲一下我自己的理解,如果讲的不好,或者根本就讲错了,请大家谅解。 抽象工厂模式 (Abstract Factory)意图提供一个创建一系列相关或相互依赖对象的
2012-10-22 13:55:36 782
OSX服务端+iphone客户端 网络通信小程序
2013-05-16
封装了一个带上下刷新功能的table(UITableView子类)
2012-12-28
WDM驱动-完成例程
2012-12-21
使用DeviceIoControl进行通信(直接方式)
2012-11-23
缓冲区方式WDM驱动例子
2012-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人