總結使人進步,視覺化介面GUI應用開發總結:Android、iOS、Web、Swing、Windows開發等

小雷FansUnion發表於2015-12-06
視覺化介面的軟體,是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日之前,今天總算是沒有拖延~   

相關文章