標籤:
可視化介面的軟體,是21世紀最主流的應用類型了,黑屏控制台的不適合普通使用者。
2004年左右的時候,作為普通網民,接觸的自然是可視化,準確是Windows那一套。 那個時候,Microsoft Windows 98,紅警,QQ是3個印象深刻的軟體。 大學之後,入了行,先後學習了Windows程式設計(C語言API開發)、MFC、Java Swing,Html Web,Android和iOS。 總的來說,現在Html web和Java Swing要熟悉一些,Android和iOS的介面在深入學習中,Windows和MFC基本廢棄了。 學習了這麼多可視化介面的應用程式開發,回頭來看,很多地方,都是一樣的。因此,特意總結下。
我的觀念是,總結使人進步。
總的流程:
1.入口,應用程式的起點 Java Swing、Windows、iOS,是main函數。Android,AndroidManifest.xml指定Activity,可以認為程式入口被“Android”隱藏了。Web,入口是網域名稱,對應到某個URL。後端是,比如Java,就是web.xml。
2.啟動流程封裝和介面 應用有了入口,就可以開始執行。執行的過程,通常都是先執行初始化邏輯。初始化邏輯,通常比較複雜。應用開發平台,會把整個的流程,清晰低定義出來,然後給開發人員留出很多擴充介面。一部分介面是可選的,一部分是必須實現的。Java Swing這種main函數的,相對簡單一點,按照咱們寫的代碼,一步步來就可以了。開發平台封裝的會比較少。Java Web這種,web.xml各種配置,Tomcat等伺服器,按照web.xml配置,初始化基本環境,servlet,listener等,留給開發人員的初始化,是通過配置servlet等方式。我的理解是,Web開發這種,初始化會比較多。 Android,和Java Swing類似,留給開發人員的初始化不是很多。執行的過程中,需要資源,再初始化。iOS,學得不久,和Android基本一致。因此,主要分為3類:Java Swing應用,按照main一步步來,初始化很少。Java Web,初始化繁多,各種設定檔。Android和iOS,初始化也很少,可以按需要來。(個人感覺不夠準確啊,僅供參考)
3.初始化,開發人員擴充介面 應用初始化的過程,會給開發人員留很多“擴充的介面”,從而把自己的程式和邏輯加入進來。 Java Web中,比如用了SpringMVC架構,DispatchServlet就攔截了所有的URL,再分配到我們自己寫的各個Controller中。 Android中,配置Service和Activity等。
4.繪製介面。 Java Swing,用各種UI組件、API和布局,構造介面。 Android、iOS、Windows,也差不多。 Web Html,則是用Html和CSS比較多。
5.綁定事件。 Web前端中,JavaScript綁定click等,也可以把超連結的點擊,理解成標準的內建的事件。 Android、Java等,都差不多。 綁定、移除等操作。
6.事件響應。 可以說,事件響應,才是程式的重點,開發人員介入最多的地方。 每一個事件,都需要響應,響應邏輯,就是處理介面資源、動畫效果、商務邏輯的地方。 比如,使用者點擊按鈕,提交了一個表單。捕捉到這個事件,把表單存到資料庫,再給使用者一個反饋,或者跳轉到其它介面。
三種機制: 1.為1個介面組件,綁定到1個明確的函數代碼上。1對1 比如,JavaScript中,$("#submitBtn").on("click,function(){}); 這種方式,比較明確,非常常見。 2.為1類介面組件,綁定1個事件。1對多。 比如,JavaScript中,$(".action").on("click,function(){}); 這種方式,代碼寫起來簡潔,適合約一類的事件。在Web端比較多。 Android移動端、Java Swing等,用的比較少,沒有怎麼見過。 3.不明確綁定到某個函數,使用純粹的訊息機制。 印象中,Windows程式設計中,事件是真正的機遇“訊息”的。 點擊一個按鈕,這個事件,是當作一個訊息的。 代碼中,有專門的處理訊息的地方。 我們經常看到的,把一個事件綁定到某個函數,是Android等架構簡化的結果。 從Windows程式設計中,我們可以看出,監聽事件,通常都是“迴圈”或者“處於等待”狀態的。 也因此,UI通常都有一個“主線程”。 事件響應,有可能會開啟新的線程。 要不然,點擊了第1個按鈕,再點擊第2個,就不響應了。
小結 總的流程:入口-系統初始化-開發人員初始化-介面-綁定事件-響應事件或捕捉訊息-處理商務邏輯-返回結果。 限於經驗和表達能力,只能這麼大概寫一下。 細一點,就需要具體到某種技術,比如Android,需要專業的大神來解釋了。
最後 從以上,我們可以看出,在不同程式設計語言和GUI平台架構中,整個流程是類似的。 2000年以前,就建立了這樣的模型,後面就算是新出來的,也大致是按照這個思路的。 我們似乎可以稱之為“GUI設計模式”。 此外,在不同語言中,資料結構、演算法、業務模型、文法,等很多地方都存在著很多的共性。 理解了這些共性,再找出差一點,學習新的程式設計語言等技術技能,就快很多。
一個人的學習能力,和總結,找規律,有很大的關係。
重複學習相同的相似的內容,花了很多無用功,理解還不夠深刻。
現在再回頭,理解初中高中的“觸類旁通”等學習境界,說的應該就是這個道理。
現在,再回頭想想咱們早期的學習方法和知識,很多還是有價值的。
知識,還是要活學活用。 希望通過本篇,能夠給相關友人帶來一些啟發。 小雷FansUnion-專註互連網技術和金融投資 2015年12月6日
在之前的文章中,說的是在12月7日之前,今天總算是沒有拖延~
總結使人進步,可視化介面GUI應用開發總結:Android、iOS、Web、Swing、Windows開發等