五月 3rd, 2012
在我们编程中会碰到这样一个问题
当我们定义了如下一个类
#include "a.h"
#include "b.h"
class CObject
{
public:
CObject();
~CObject();
void Print();
private:
A a;
B b;
}
这段代码原本是没有问题的
但是,当我们对这个类增加成员变量C,或者是A/B本身进行了一些修改,
那么,所有包含该类的文件都会重新编译,如果这个是个基类,则编译过程相当痛苦。
而真正使用这个类的人员,根本就不关心你是否有A/B/C之类,他只想调用Print函数。
就像别人用你的电脑上网,你非要让他知道这个电脑在哪里买的一样。
这个问题的解决方法很简单
既然别人不想看到我的成员变量,我就把它隐藏起来。
具体实现如下:
object.h
class CObject
{
public:
CObject();
~CObject();
void Print();
private:
class Impl;
Impl* pImpl;
}
object.cpp
#include "a.h"
#include "b.h"
class Impl
{
public:
void Print();
private:
A a;
B b;
}
CObject::CObject() : pImpl( new Impl ){}
CObject::~CObject()
{
delete pImpl;
}
void CObject::Print()
{
pImpl->Print();
}
这样的一个实现,叫做实现隐藏
不管Object的结构怎么的变化,都不会引起其它关联类重新编译,唯一不爽会写一些重复的接口。
网上有人说这个实现跟设计模式中的桥接模式一样,分析一下,只是单纯的结构上的形似,解决的问题却不同
桥接模式的一个场景如下
class Pen // 笔
class RedPen : public Pen // 红笔
class BluePen : public Pen // 蓝笔
class ShortRedPen : public Pen // 短红笔
class LongRedPen : public Pen // 长红笔
这是一个正在不断膨胀的类,在颜色和长短上,类型正在不断扩张,桥接模式解决这个问题的方式如下
class Size;
class Clolr;
class Pen // 笔
{
private:
Color* color;
Size * size;
}
class Short : public Size
class Long : public Size
class Red : public Color
class Blue : public Color
这样的一种写法,有效的避免类由于自身元素的变化引发的扩张,是为了解决子类膨胀问题。
而Impl主要是为了解决基类元素变化引起其余相关类变化的一个实现。
Posted in 编程语言 | No Comments »
四月 17th, 2012
忙活了一个月
东西总算是做完了
效果还比较满意
悠闲的下午
听着这首外面的世界
想起曾经在中科的种种
感慨良多
最近终于把房子买了
算是了却了一桩心事
同时,也领证了
也算是一个有身份的人了
曾经躺在中科宿舍仰望天空的日子
看着满天繁星
想到过未来
好像跟现在的不太一样
又好像有点一样
每一个时期
都有着不同的梦想
梦想虽然在现实面前已经变得那么模糊
模糊到我都快已经觉得那只是一个梦
但是我依然坚持着
外面的世界很精彩
外面的世界也很无奈
Posted in 生活 | No Comments »
十二月 29th, 2011
岁末将至、
做个总结、
列举十件事,算是回顾、也算是对明年的一个期待、
1)爸妈来上海
终于在我工作4年以后,我让老爸老妈出了趟远门,对于我来说,这次的远门意义重大,让我更清楚的认识了老妈,她的坚强、勇气、宽容、无私,无法用言语去形容发生的种种事情,说句实话,心里还有些许阴影,但是也让我成长了很多,希望爸妈能永远身体健康。
2)吴明会结婚
记得好像是3月份才听她说要5、1结婚,就骗她说估计是回不去了,就一天假,其实当时就已经想好了一定要回去,因为曾经错过了俊哥结婚,已经让我愧疚了很久(一直没对俊哥说,不是我不想回去,其实当时我身上只有4位数的钱了,希望你能懂)。定了30号的机票,满心欢喜的等着,后面吴明会又电话我,问我要不要回去,我还是说了不回去,不过从她那里得到个消息,她家是30号办酒,T_T,那个机票是打折票,退不了,只能再买一张29号的了。在路上有些激动,毕竟第一次参加好朋友的婚礼,而且是这么远回去,回去的时候顺带还给杨和王一人带了一个ip4(自费),那天到了吴明会家,俊哥哥看到了我,眼神感觉有些怪,也许他在想这%^&*的我结婚你不来,心里面有些难受,也没解释,毕竟那天他不是主角,哈哈。吴明会来了,看到了我,有点吃惊,看得出来很开心,后来她说她当时差点哭了,那天晚上跟她聊了很久,生活、人生、过去、未来、很多很多。
3)看房子
这一年,开始张罗着看房了,不过目前为止还没有结果,年初的时候觉得好像可以看房了,就和卡总一起东看看西看看,其实也没下太大决心,感觉是交给自己那样一个任务,要去看,买房是个麻烦事,而我们两个都怕麻烦,真悲剧,下半年,兴致多了一些,到处找房子看,但都没看到中意的,我们两个都肯定,我们中意的那套就是以前我们租房看到的那套,中意它什么,其实也说不出,年末,调控政策初见成效,到处都是房价跌,买房的兴致又稍微降了一下,算了,还是明年看吧。
4)翁翁结婚
小年青结婚,刚好卡总公司组织旅游,就去看了一下,他老婆是他初中同学,剧情很狗血,几年没见面,突然有一天在公交上遇到,聊着聊着就好上了。翁翁也道出了一句名言:头发是盛(肾)开的花朵。他是我们寝室第二个结婚的,贱人第一个,牛哥马上元旦也结婚,欧阳好像也是1月18号。貌似剩下的人不多了,我要什么时候结婚呢- -。
5)卡总升职
卡总升职了,这是年末收获的一个好消息,是因为她老大要移民澳大利亚了,对于工作,我个人的看法是,不要求赚太多,但不能太少,开心就好。她现在的工作应该还行,不过我觉得她还有更大发展空间。
6)买电子产品
笔记本送给老哥了,给卡总配了一台台式机,这样她下副本的时候不会说卡了- -,年初买了一个G10、一个MB525,应该都是我们买的最贵的手机了,想当年用的黑莓7100才600块,年末买了个kindle touch,目前还在美国,还不知道什么时候能寄过来T_T,悲剧。
7)编程激情仍在
年初写了一个类库,年末重构了组内一个软件,给来年开了一个好头,明年估计要忙,技术有了写长进,也学到了很多管理方面的东西。组内妹子和另外一个兄弟都升职了,真心替他们高兴,没白培养。总的来说,这一年工作还算顺利。
8)体检
今年体检结果还不错,基本没毛病,虽然感觉上是瘦了点。干我们这行,身体健康最重要。
9)生日
今年生日过得很悲催,前一天老妈电话,祝我生日快乐,当天早上,吴跟陈都短信祝快乐,基本是每年例行公事,卡总感觉是忘记了我生日,我其实也忙,都快忘记了,下班,找了很多地方准备买蛋糕,一直买不到,最后在张江那边买到了个,回家,知道没饭吃,买了一份炒饭,到家后,趁卡总在看电影,关了灯拿着蛋糕走进去,开开心心的想给卡总一个惊喜,卡总有点傻掉了,“啊啊啊。今天不是我生日啊。。”,听到这个心情顿时跌入谷底,“大爷的,当然不是你生日,是我生日”。。。
10)卡总
一年又过去了,我们还在一起,争吵有,但是次数不多,总体感觉还行,希望明年保持,不过明年不知道会换一个称谓。
Posted in 生活 | No Comments »
十月 24th, 2011
为了找程序的句柄泄漏
开了Windbg
使用过后,发现大部分程序开始无限崩溃状态,包括explorer
经同事提醒
是Windbg篡改了注册表,让程序每次启动会执行另外的程序
只需要删除注册表其中一项就ok了
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
Posted in 编程语言 | No Comments »
八月 22nd, 2011
http://coolshell.cn/articles/5265.html
Posted in 生活 | No Comments »