總結使人進步,視覺化介面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日之前,今天總算是沒有拖延~
相關文章
- iOS開發經驗總結iOS
- 移動web開發總結Web
- Android開發經驗總結Android
- Android TV開發總結【RecycleView】AndroidView
- iOS之BLE藍芽SDK開發個人總結(進階篇)iOS藍芽
- iOS開發經驗總結2iOS
- iOS開發經驗總結3iOS
- web移動開發總結(六)Web移動開發
- web前端開發規範總結Web前端
- Android 日常開發問題總結Android
- Android開發技術面總結Android
- 開發總結
- iOS藍芽Mesh開發總結一iOS藍芽
- iOS藍芽Mesh開發總結二iOS藍芽
- 提高Web前端開發技能的優化技巧總結!Web前端優化
- OPPO Android開發技術面總結Android
- Android Flutter混合開發問題總結AndroidFlutter
- 電視機頂盒web開發總結,避免踩坑Web
- 史丹佛iOS Swift開發公開課總結(一)iOSSwift
- iOS開發UI篇--iOS動畫(Core Animation)總結iOSUI動畫
- Android Flutter混合開發問題總結(二)AndroidFlutter
- Spring Boot入門(四):開發Web Api介面常用註解總結Spring BootWebAPI
- TypeScript 在開發應用中的實踐總結TypeScript
- iOS之BLE藍芽SDK開發個人總結(基礎篇)iOS藍芽
- 小程式開發總結
- Vue 開發技巧總結Vue
- PhotosKit開發總結(一)
- CNN視覺化技術總結(三)--類視覺化CNN視覺化
- 經驗總結--我的小程式開發和進化之路
- 2020年面向iOS開發人員的知識點總結(更新中)iOS
- mpvue開發小程式總結Vue
- 小程式開發技巧總結
- window驅動開發總結
- Taro小程式開發總結
- tp 框架開發整理總結框架
- PWA 開發總結(坑多)
- IT開發工作分類【總結】
- React開發簡書總結React
- Android應用開發進階Android