我从大三开始学习MFC,对于一个学软件的学生来说算是有点晚,到现在差不多有3个年头了。我在大四进入公司实习开始学习COM,接触到ATL并用它来做开发。我在大二冬天开始恋爱,到现在为止第一段爱情走过3个半年头终于到了末路。这些对于我来说都算初尝,尝之有味所以写一点胡言乱语。
男女关系
如果从哲学的观点来看,这大概要说是一种辩证关系了!
首先谈谈男人。男人与男孩的区别在于责任,对于一个男人来说,他的肩膀永远有负担,他要解决生活中遇到的所有问题,可以为妻儿带来幸福生活,可以赡养父母,可以做一些成就来创一番事业。所以男人不要轻生,因为你垮下就意味着你的负担没有了支撑,也就是你不负责任。男人的这种责任体现了一种刚性,打不倒压不垮,坎坎坷坷一路走来即使没有扬名立万但是肩膀上的负担始终没有落下。铮铮铁骨、铁血男儿、阳刚之美都是对男人的赞美,一个家庭男人是顶梁柱,这就是责任。
再谈谈女人。女人与女孩的区别在于柔情,少了撒娇和任性,多了体贴和温柔。女人是生活的调剂品,少了她尽管可以填抱肚皮、补充营养但食之无味。女人天生就是善于交际的,这本身体现的就是一种柔性,就像太极一样,以柔克刚,借助刚性体现柔美。
用建筑来形容男女关系,男人就像钢筋水泥搭建起来的框架承受着外力,女人则是对框架填补装修使其美观,不同的男人有着不同的建筑风格,不同的女人可以使建筑呈现不同的美。成功的男人背后都有一个女人,钢筋水泥加上精心装饰让人体会到设计之美,至于谁重要次要,谁表谁里都不是关键,关键的是刚柔的结合。
MFC
MFC是一个男人,从Microsoft C/C++ version 7.0到Visual Stduio.net 2005一直承担着软件框架设计的角色,风风雨雨路不回头,屹立在软件设计大道,为开发者提供便利,著名的BCG库和XTREME库都是在MFC源码基础上的改进。它大而繁杂,曲折通幽,粗旷豪放。它必须承担责任,提供软件设计的一套解决方案,而且背负着历史包袱,所以难免带有一些成熟男人的深邃而不被人理解。如果你还一味的去批判它,那只能说你不懂男人的心,不理解一个男人难言之苦。
ATL
ATL是一个女人,小巧灵活讨人喜爱,它作为COM思想的实现而拿出来解决软件协作的问题。它可以不具体实现功能而只留出一些接口,接口两端相通并且相互通信,体现了女人的协调能力!为一个C++对象配备一个ATL对象你可以想象有什么结果嘛?
软件设计中的MFC与ATL
我曾经写过的一篇随笔:http://www.cppblog.com/wlwlxj/archive/2005/12/25/2070.aspx。这篇随笔是我当时的想法,即使现在我也不认为这种想法有错误,但是觉得有点静止刻板的味道。
以前我一直以为ATL就是做控件、构造插件接口体系的,而MFC就是用来做界面功能。它们属于不同体系,在功能级别上存在差异,所以只是在纵向上结合而没有尝试横向的结合。人类社会是自然的,软件社会也应该是自然的。自然代表一种随和,亲近,协调。
提到MFC,八九不离十就涉及到软件界面开发。目前来说软件复用需求越来越高,而软件功能的不确定因素越来越大,一个特定的界面行为可能不确定。MFC是一个男人,用它可以做任何想做的界面,这就是它的刚性。但是我们到底是要去做什么还是告诉别人我们可以做什么呢?如果我们一味的做,那我们充其量只是一个莽夫,是吕布有勇无谋。我告诉你我有一个MFC对象,还告诉你它可以做什么,这样不就够了。
当我拿到ArcGis体验的时候,我可以感觉到它的坚固与厚度,而研究它的插件体系的时候又能感觉到柔性。好的软件就是这样刚柔并进,不是任何事情都做,但明白告诉别人自己可以做什么。
MFC是男人天生缺乏沟通能力,所以无法告知外界它自身的行为,只有它自己知道。这时候就需要一个管子插到对象内部去了解它,而ATL刚好提供了一个接口,将其一段插入MFC对象内部而露出另一端以便告知外界MFC对象内部的行为。这样的界面是可解释的界面,它具有做事情的能力,但是它不去做,而成为可复用界面。
(2006.7.3 于北京华亭)
posted on 2006-07-03 08:21
万连文 阅读(1515)
评论(4) 编辑 收藏 引用 所属分类:
ATL 、
MFC