我從大三開始學習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
以前我一直以為ATL就是做控件、構造插件接口體系的,而MFC就是用來做界面功能。它們屬於不同體系,在功能級別上存在差異,所以只是在縱向上結合而沒有嘗試橫向的結合。人類社會是自然的,軟件社會也應該是自然的。自然代表一種隨和,親近,協調。
提到MFC,八九不離十就涉及到軟件界面開發。目前來說軟件復用需求越來越高,而軟件功能的不確定因素越來越大,一個特定的界面行為可能不確定。MFC是一個男人,用它可以做任何想做的界面,這就是它的剛性。但是我們到底是要去做什麼還是告訴別人我們可以做什麼呢?如果我們一味的做,那我們充其量只是一個莽夫,是呂布有勇無謀。我告訴你我有一個MFC對象,還告訴你它可以做什麼,這樣不就夠了。
MFC是男人天生缺乏溝通能力,所以無法告知外界它自身的行為,只有它自己知道。這時候就需要一個管子插到對象內部去了解它,而ATL剛好提供了一個接口,將其一段插入MFC對象內部而露出另一端以便告知外界MFC對象內部的行為。這樣的界面是可解釋的界面,它具有做事情的能力,但是它不去做,而成為可復用界面。