重啟《GacUI的設計與演化》

幾年前挖過兩個坑,一個是GacUI在segmentfault上的教程,另外一個是GacUI與設計模式。教程當然只能等1.0做完之後再寫了,這次主要說的是後面那個。本來是想借著開發GacUI的過程,給大家講一講設計模式的知識的。後來寫了一半坑了,坑的時候剛好在給GacUI添加大量的新東西。後來想想這坑的也是好,因為GacUI的設計經歷了一次大規模的變動,就算寫了這個文章,也要作廢了(逃

如果關心GacUI和我的專欄的,應該都知道之前發生的這個事情,我就不再提了。之前看了沈大俠的文章,又讓我記起了這個沒填的坑,於是我就想把它寫完。當然大家不要等,我也不會馬上寫,寫的過程也需要很久,一篇一篇慢慢發也要看心情的。不過這次題目我把它定為《GacUI的設計與演化》,一方面是剽竊了BS大爺的idea,另一方面也可以寫一下GacUI這七年來的變化。

大家看各種架構和設計模式的書和文章估計也很多了,不過談演化的我很少見到。雖然GacUI早期的設計也有很多傻逼的地方,但是讓大家看看GacUI是如何一步一步變化到今天這個樣子,應該也能學到很多東西。

為什麼我要在這個時候來說呢?因為GacUI已經臨近尾聲了,架構不會改了,就一直這樣了。在開發之餘換換口味寫寫文章,也是不斷推進進度的一種辦法。最近玩遊戲玩的也比較多,應該收斂一下。

這裡主要提一下GacUI更早以前的歷史。開發UI庫的習慣由來已久了。第一次嘗試是高中的時候給自己的ARPG做UI庫和腳本引擎,然後後面就慢慢變化,寫了好幾遍,到了 這裡 終於有一個超級簡單的雛形了。那個時候還不懂得怎麼開發UI的layout的系統,於是弄了個廢物出來。後面當然發現不行就坑掉了。那個時候才剛在微軟入職,已經是9年前的事情了。不過使用矢量圖來繪製UI的感覺還是體會到了。

後來我覺得還是應該學習WPF,於是就粗略看了一遍,然後做下一個UI庫。這個UI庫就有一些簡化過的dependency property的想法,然後實現了一些簡單的控制項和排版功能,最後發現C++模擬這個需要浪費的計算力實在是太大了,於是又GG了。

因此在2011年,我把10年前封裝Windows API的那套UI庫的基礎部分拿了出來,在上面加一層interface,把跨平台的部分和平台相關的部分分開,然後開始寫GacUI。之前積累了幾年的經驗教訓,讓我粗略的到了一個正確的設計,因此就慢慢演變到今天。這個地方還有我早期開發GacUI的筆記。

《GacUI的設計與演化》會從一開始的想法開始寫,不過早期的代碼有些已經找不到了,因為我是到了工作之後才用TFS的,所以估計也記不清多少了。但是GacUI的所有歷史都在,包括codeplex上面的都遷移到github的歷史倉庫里了。我可以慢慢看,回憶一下以前的想法,然後寫進文章里。

文章估計會用markdown寫在github上,每篇改好了我就發到知乎來。segmentfault看看他到美帝的那個傻逼延遲到第能不能解決,不能我就不用了。這次不知道會不會坑,不過反正也是個長期的事情,看緣分了(逃


推薦閱讀:

有哪些有趣又優美的編程語言?
GacUI 動畫系統 (1)
[數據結構]表達式樹——手動eval()
從1+1到混沌 | Mathematica系列教程·第一集
Linux 下有哪些特別方便的自動化工具?

TAG:編程 | 圖形用戶界面 | CC |