本來想就我要說的幾個問題單獨開帖的。但是考慮到關心GUI的人本來就不多,而且網絡又是快餐文化,還是一次性的雜述一些我關于GUI的想法。
關于GUI,比如windows下如何開窗口啊,MFC,別的什么庫之類的,我相信很多朋友都很了解了。GUI的庫,事件驅動也應該很熟悉。RAD工具,諸如Delphi之類的用的人也應該不少。因此,我僅僅談談大家可能在專門學習GUI,而不是開發一個大型GUI時不大會注意的幾個問題
1、GUI的表現單位是Frame
Frame應該是Delphi的詞匯。在.net中應該是UserControl。其實就是擁有一個完整功能的GUI模塊。平時用的控件是構成Frame的組件,而Frame則構成了整個GUI的控件。所以可以說Frame就是粗粒度的自定義控件
GUI應用靠Frame組合起來變成一個大的應用。Frame之間靠提供的接口,public屬性和事件回調來達到交互的目的。
2、GUI的排版
在Delphi這樣的工具中很容易忽略排版。排版在GUI中其實是一個很有挑戰的工作。舉一個最簡單的例子就是你如何應對窗口的縮放?
對于GUI的排版,Java有Layout,.net有anchor docking,Delphi是絕對排版,GTK, TK這些有Box容器。基本上關于排版的解決方案是一個庫一種,但是背后的基本原理其實都是一樣的,通過某種屬性限制,計算出正確的窗口位置。問題就出在到底用什么屬性。關于這個問題我這里只是提示你注意一下,不要小視它。希望以后有機會單獨開帖講講GUI中的排版
3、GUI是以界面為中心的
按照Alan Cooper的說法,軟件設計應該由開發人員和界面設計人員完成。我現在越來越傾向于同意這種看法,界面設計不是普通程序員能夠完成的。而最近與業內的一些工程師交流,普遍的感覺是“最亂的”就是表現層。
除了對人員的影響這個方面,界面為中心還深深的影響者表現層的技術和代碼。在業務層我們往往會通過領域建模,以對象為中心來進行模塊劃分。但是這種劃分的思想不能照搬到界面這塊來,為此我付出了完全拋棄兩版設計的代價才弄明白。界面就是圍繞窗口交互來進行的,Frame就是表現層的劃分。放到Web上來,頁面就是劃分。然后以這種分劃為中心展開對后臺代碼的調用。而這個時候,DTO,模板,MVC等技術才得意登場。不過最基本的還是要把握住界面為中心。
希望通過小小一點雜述能夠讓你在以后有機會寫比較大型的GUI應用時,想起我說過的話。
關于GUI,比如windows下如何開窗口啊,MFC,別的什么庫之類的,我相信很多朋友都很了解了。GUI的庫,事件驅動也應該很熟悉。RAD工具,諸如Delphi之類的用的人也應該不少。因此,我僅僅談談大家可能在專門學習GUI,而不是開發一個大型GUI時不大會注意的幾個問題
1、GUI的表現單位是Frame
Frame應該是Delphi的詞匯。在.net中應該是UserControl。其實就是擁有一個完整功能的GUI模塊。平時用的控件是構成Frame的組件,而Frame則構成了整個GUI的控件。所以可以說Frame就是粗粒度的自定義控件
GUI應用靠Frame組合起來變成一個大的應用。Frame之間靠提供的接口,public屬性和事件回調來達到交互的目的。
2、GUI的排版
在Delphi這樣的工具中很容易忽略排版。排版在GUI中其實是一個很有挑戰的工作。舉一個最簡單的例子就是你如何應對窗口的縮放?
對于GUI的排版,Java有Layout,.net有anchor docking,Delphi是絕對排版,GTK, TK這些有Box容器。基本上關于排版的解決方案是一個庫一種,但是背后的基本原理其實都是一樣的,通過某種屬性限制,計算出正確的窗口位置。問題就出在到底用什么屬性。關于這個問題我這里只是提示你注意一下,不要小視它。希望以后有機會單獨開帖講講GUI中的排版
3、GUI是以界面為中心的
按照Alan Cooper的說法,軟件設計應該由開發人員和界面設計人員完成。我現在越來越傾向于同意這種看法,界面設計不是普通程序員能夠完成的。而最近與業內的一些工程師交流,普遍的感覺是“最亂的”就是表現層。
除了對人員的影響這個方面,界面為中心還深深的影響者表現層的技術和代碼。在業務層我們往往會通過領域建模,以對象為中心來進行模塊劃分。但是這種劃分的思想不能照搬到界面這塊來,為此我付出了完全拋棄兩版設計的代價才弄明白。界面就是圍繞窗口交互來進行的,Frame就是表現層的劃分。放到Web上來,頁面就是劃分。然后以這種分劃為中心展開對后臺代碼的調用。而這個時候,DTO,模板,MVC等技術才得意登場。不過最基本的還是要把握住界面為中心。
希望通過小小一點雜述能夠讓你在以后有機會寫比較大型的GUI應用時,想起我說過的話。
浙公網安備 33010602011771號