Tangram與軟件的組合構造
2024-07-21 02:16:14
供稿:網友
 
tangram與軟件的組合構造       tangram是中文“七巧板”的英文對應物,大概老外們認為“七巧板”是唐朝人的睿智游戲,而海外唐朝就象征著中國。“七巧板”表現出明顯的樸素的構造化思想,以7個元素為基,盡情的造你能所造。最早開發tangram的時候,這個系統取個什么名字,頗費一番腦筋,好的創意一定得有相配的名字。七巧板的想法就是給一個軟件系統一個充分大的“基”,在這個“基”的基礎上允許你進行符合規則的構造。軟件功能的組合構造是一個十分有趣的問題,首先你必須提供組合構造的基礎,其次你必須制定組合構造的規則,然后你必須給出參與組合的成員元素之間的調度、交互方案。       html模型是一個很有趣的例子,通過提供一組控件,你就可以構造多彩的頁面了,最早我就是通過驅動html的擴展接口來實現html模型與mfc、atl等框架對接的,典型的做法是,設計一個idispatch對象iextdisp,這個對象能夠訪問你的對象模型,然后再想辦法將這個對象與html模型綁定,mshtml庫提供了這個機制。通過如上的處理,你可以在你的html頁面中調用你的對象指令系統,一個典型的例子就是visual studio .net的代碼向導(wizard)的實現。盡管html指令可以擴展,但卻不是一個好的選擇,我最終將html作為一個更大的“基”的一個成員來對待,之所以如此,是因為html的表現力還嫌不足,因為畢竟這些東西不是程序或者不像程序。早期使用delphi時,vcl中有一類frame對象給我留下很好的印象,從形式上看,一個cframewnd與delphi的frame很像,但不是。一般來說,delphi的對象是編譯前的,也就是說,(絕大多數)delphi等系統的對象要經過編譯后才能使用,因此選擇delphi為tangram主體構造的可行性被排除了(事實上delphi一樣可行,因為delphi支持rtti)。構造tangram的時候,就想到要支持delphi的frame對象(現在實現的tangram系統可以支持delphi/bcb的activeform)。最終選定mfc作為tangram的底層基礎是因為mfc更好的支持rtti(運行時類信息),以及mfc有靈活的存儲機制(mfc的存儲機制簡陋但不失為強大!)。       讓我們看一個較為復雜的frame窗體:(一個合成的frame窗口)上面的窗體是由一個.net control、二個userform以及一個mfc view合成,frame框架是由二個splitter以及一個excel風格的tabwnd構成。軟件的組合系指:先完成frame框架,然后將上述對象(一個.net control、二個userform以及一個mfc view)“安裝”上去,構架的格局可能有多種,如果一個程序沒有內置設計引擎,程序員就辛苦了,用戶的定制能力也就極大地被限制了,tangram的設計目標就是保證這一切可以“可視化”地完成!而且完成得足夠專業。一般來說,html不能滿足程序員的要求,而程序員又無法或很難具備html的靈活性,在這方面,tangram給出一個折中的方案:具備html的可設計、編輯性,有具有程序界面的視覺。傳統的程序,由于被操作的對象大多駐留在程序內部,因此,可設計性被極大地限制了,tangram立足于提供一個足夠廣泛的“軟件對象基”,使得可設計性成為事實,如果mfc view、activex ctrl/activex document、.net control、html、flash等類型的元素成為一個超級“七巧板”中的原子成分,等待你的將是一個巨大無比、色彩斑斕的對象世界,掌握tangram,你就控制了microsoft的組件世界,你就擁有無限的連接能力……(內置vba后的form對象)(二次開發)(form設計)