總結使人進步,視覺化介面GUI應用開發總結:Android、iOS、Web、Swing、Windows開發等
視覺化介面的軟體,是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日之前,今天總算是沒有拖延~
相關文章
- 移動web開發總結Web
- Web APP開發技巧總結WebAPP
- iOS開發經驗總結iOS
- iOS開發—技巧總結(一)iOS
- Android遊戲開發設計步驟總結Android遊戲開發
- web前端開發規範總結Web前端
- web移動開發總結(六)Web移動開發
- Web高效能開發總結Web
- Android WebRTC 音視訊開發總結(一)AndroidWeb
- Android WebRTC 音視訊開發總結(三)AndroidWeb
- iOS開發經驗總結2iOS
- iOS開發經驗總結3iOS
- iOS語音提醒開發總結iOS
- java開發一個應用的總結Java
- C#開發一應用的總結C#
- Android開發經驗總結Android
- Android TV開發總結【RecycleView】AndroidView
- Android 開發功能模組總結Android
- 提高Web前端開發技能的優化技巧總結!Web前端優化
- 《Web安全開發指南》讀後總結Web
- 《全端Web開發》選譯——總結Web
- iOS藍芽Mesh開發總結一iOS藍芽
- iOS藍芽Mesh開發總結二iOS藍芽
- iOS 應用開發中的斷點續傳實踐總結iOS斷點
- 開發中總結
- 微信開發總結
- 開發Qt應用程式的基本方法總結QT
- 電視機頂盒web開發總結,避免踩坑Web
- Android 日常開發問題總結Android
- Android開發技術面總結Android
- android開發之svg全面總結AndroidSVG
- Android 開發知識點總結Android
- Android開發常用知識總結Android
- Android藍芽開發全面總結Android藍芽
- 高通平臺android開發總結Android
- iOS開發UI篇--iOS動畫(Core Animation)總結iOSUI動畫
- Android應用開發效能優化系列總篇Android優化
- FFmpeg iOS 音訊開發的小總結iOS音訊