Brandy,一个始终在拼搏并享受着软件开发乐趣的普通程序员,着迷于各种面向对象相关的技术,喜欢把软件开发当成是一种艺术行为,尤其景仰国外那些有艺术家气息的大师,愿与经留此地的诸君探讨各种技术问题。技术研究方向:OOP/OOD、设计模式、UML。
搬迁到新地址:http://BrandyCao.blogchina.com
速溶咖啡,加多少糖都有苦味
偶然在网上发现了这首歌曲,是由一位网络歌手创作演绎的,曲风清新凄美。是的,无论是爱情还是生活,都是有苦味的,我们只能慢慢的细心体味这其中的味道。
点击此处下载
附上歌词:
速溶咖啡
词、曲、演唱:土豆头
两个人的座位,只有我一个人醉
想要爱的完美,却无法自己支配
为你掉下眼泪,转身装做无所谓
宁愿选择崩溃,也不愿承认后悔
太阳猛然下坠,天色发黑,我的心变灰
走到天地交汇,可有人陪,给我点安慰
原来爱情是一杯,速溶的咖啡 盛满身心的疲惫,没有时间仔细品味
原来爱情是一杯,速溶的咖啡 所有调料都不对,加多少糖都有苦味
北京下雪了
一个应该记住的日子
讨厌C++高手称号
当然从某种意义上来说,他确实是高手,熟悉一门语言的高手而已。但就我的理解真正的高手不只是熟悉一、两门语言这么简单,真正的高手是不管什么语言不语言的,真正的高手拥有的只是手中的一把剑,这把剑就是软件开发的思想。有些好逸者觉得只要很熟练的掌握了一门语言甚或是一套开发工具如MFC就觉得已经很满足了,照样可以找份相关的很好的工作赚MONEY,这类人其实早就把自己放到了低手这一列,他就只有这么一个简单的追求而已。再来说说软件开发的思想,可能每个人对思想的理解不一样,就我的理解,应该是从设计层面上来看待各类语言,就是要找出软件开发语言的共性、不同之处和它们的适用场合以及软件开发的一些基本规则,而不是孤立的看待一门语言,更不应该和别人去讨论诸如语言好坏的问题。只有这样,任何语言在你看来都是一样的,你只需熟悉的只是其基本语法而已,而软件开发思想是不变的。只有真正掌握了软件开发的思想,那即使只熟悉一门语言那也是绝顶高手;相反如果没有真正掌握软件开发思想,即使熟悉很多种语言也照样是低手。
所以当别人说你是MFC高手或是什么语言语言高手的时候,你千万别得意,因为对方要么是刚入行的低手(被低手称赞并不值得太高兴吧),要么是绝顶高手(他在讽刺你只会懂得用某种语言而已呢)。
追求高手是我不变的追求,但追求的绝不是仅仅某种语言的高手。
加州旅馆, 你是天堂还是地狱?
如果能够了解一下这首歌曲的大概历史背景的话, 我们就能够发现这首歌曲里隐藏的含义. 20世纪六、七年代的美国潮流是流行性解放和吸食大麻的年代, 摇滚乐也在那时处于鼎盛时期。转一篇文章可以了解更多 : 点击这里。这首歌曲也就是在这样的背景下产生的, 从歌词中我们可以看到那种吸了大麻后产生的种种幻觉。不知道加州旅馆究竟是天堂呢还是地狱。
附歌词:
on a dark desert highway,行驶在昏黑的荒漠公路上,
cool wind in my hair.凉风吹过我的头发。
warm smell of colitas,温馨的大麻香,
rising up through the air.弥漫在空气中。
up ahead in the distance,抬头遥望远方,
i saw a shimmering light.我看到微弱的灯光。
my head grew heavy my sight grew dim.我的头越来越沉,视线也变得模糊。
i had 2 stop 4 the night.我不得不停下来过夜。
there she stood in the doorway;她站在门口那儿招呼我
i heard the mission bell.我听到远处教堂的钟声。
and i was thinking 2 myself,我在心里对自己说
"this could b heaven or this could b hell".这里可能是天堂也可能是地狱。
then she lit up a candle,然后她点燃了蜡烛,
and she showed me the way.给我引路。
there were voices down the corridor.沿着走廊传来阵阵说话声。
i thought i heard them say...我想我听到他们在说......
welcome to the hotel california!欢迎来到加州旅馆!
such a lovely place!如此美丽的地方!
such a lovely face!多么可爱的的面容!!
plenty of room at the hotel california!加州旅馆有充足的房间!
any time of year,u can find it here!一年的任何时候,你都能在这找到房间。
her mind is tiffany-twisted,她的心为珠宝所扭曲,
she got the mercedes bends.她拥有豪华奔驰车。
she got a lot of pretty,pretty boys.她有许多漂亮的小伙子。
that she calls friends.她称之为朋友。
how they dance in the courtyard,他们在庭院里翩翩起舞,
sweet summer sweat.夏日的香汗伶俐。
some dance to remember!有些舞是为了回忆!
some dance to forget!而有些舞是为了忘却!
so i called up the captain,于是我叫来领班,
"please bring me my wine."请给我来些酒。
he said"we haven't had that spirit here,他说我们这不供应列酒 since nineteen sixty nine."从1969年起。
and still those voices are calling from far away.远处仍然传来他们的话语。
wake u up in the middle of the night.在半夜把你吵醒。
just 2 hear them say...只听到他们在说......
welcome to the hotel california!欢迎到加州旅馆来!
such a lovely place!如此美丽的地方!
such a lovely face!多么可爱的的面容!
they livin' it up at the hotel california.他们在加州旅馆尽情狂欢。
what a nice surprise,好得令人吃惊,
bring your alibis.使你有来到这的借口。
mirrors on the ceiling,天花板上镶嵌着的镜子,
the pink champagne on ice.冰镇着的粉色香槟
and she said"we are all just prisoners here-她说我们都是这的囚徒
-of our own device".但是是我们自愿的。
and in the master's chambers.在主人的卧房里。
they gathered 4 the feast.他们为宴会聚在一起。
they stabbed it with their steely knives.他们彼此间用钢刀相互砍杀。
but they just can't kill the beast.但他们甚至不能杀死野兽!
last thing i remember,我所记得的最后一件事
i was running 4 the door.是我跑向门口。
i had 2 find the passage back,我必须找到来时的路,
to the place i was before.回到我过去的地方。
"relax",said the night man,守夜人说放宽心,
"we are programmed to receive.我们只是照常接待
u can checkout any time u like.你想什么时候结帐都可以。
but u can never leave!"但你永远无法离去!
服装采购员的问题
在一次年度服装展销会上,各个厂商都展出了他们公司今年生产的各类服装,如西湖、衬衫、休闲裤等等。现在有一位采购员需要寻找一家厂商进行合作,从他们公司进货然后进行销售。现在这位采购员需要购买一套软件进行货比三家以便寻找到一个最符合他要求的厂商进行合作,为了方便,这位采购员希望只要输入某个公司的名称以及需要采购的各类服装的数量就可以马上获取总的价格和各类服装的相关信息。
我们可以使用抽象工厂(Abstract Factory)模式实现上面的这个软件。抽象工厂的结构图如下:

由此我们可以设计出下面这样一个接口结构图:

我们提供一个函数:
GetInfo(公司 , 西服的数量 , 衬衫的数量)
采购员只要输入恰当的参数调用这个函数即可得到某个具体公司生产的服装全部信息了。
用单件类来代替全局变量
以OO的思维方式, 程序中应该尽量少用全局变量, 因为如果出现大量的全局变量, 而程序中又有许多地方使用它, 势必会造成程序逻辑混乱, 容易出差错. 全局变量的最本质的特性就是在程序运行期间只有一个实例, 程序的其它部分可以任意访问, 这与单件模式的应用场合不谋而和. 单件模式可以确保在程序的运行期间只存在一个类的固定个实例(通常是单个, 这也是单件模式名称的由来). 所以我们完全可以用单件类中的成员变量来代替全局变量, 如果我们把性质相同的全局变量归入同一个单件类中, 在程序中就不会出现大量的全局变量. 如原先需要设计如下的全局变量 :
int iVar;
float fVar;
double dVar;
long lVar;
用单件类代替它们, 程序代码可以如下 :
class CGlobalVar
{
private :
static CGlobalVar* _instance;
int m_iVar;
float m_fVar;
double m_dVar;
long m_lVar;
private :
CGlobalVar(); // 构造函数私有化, 外界不能直接创建这个类的实例
{
_instance = NULL;
m_iVar = 0;
m_fVar = 0.0f;
m_dVar = 0.0;
m_lVar = 0L;
}
public :
static CGlobalVar* CreateInstance()
{
if(_instance == null)
{
_instance = new CGlobalVar();
}
return _instance;
}
int GetIVar() const { return m_iVar; }
void SetIVar(int iVar) { m_iVar = iVar);
// 其它Get/Set对
}