可视化界面的软件,是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开发等的更多相关文章

  1. Android IOS WebRTC 音视频开发总结(二八)-- 多人视频方案介绍

    很多人问视频会议,在线教学,主播怎么弄,所以整理下这方面的开源解决方案, 同时为了方便测试,在自己服务器上搭建了相应的服务端,文章来自博客园RTC.Blacker,转载请说明出处. 简单来说,WEBR ...

  2. Android IOS WebRTC 音视频开发总结(二二)-- 多人视频架构模式

    本文主要介绍多人视频会议服务端架构方式,文章来自博客园RTC.Blacker,转载必须说明出处,欢迎关注个人微信公众号blacker,更多详见www.rtc.help 随着移动互联网的迅速发展,很多公 ...

  3. 痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PyQt GUI构建工具Qt Designer. 痞子衡开博客至今已有好几年,一直以嵌入式开发相关主题的文章为主线,偶尔穿插一些其他技术 ...

  4. docker swarm 集群及可视化界面的安装及配置

    docker swarm 集群及可视化界面的安装及配置 2016-12-14 16:08:46 标签:swarm consul registrator 原创作品,允许转载,转载时请务必以超链接形式标明 ...

  5. SwaggerUI+SpringMVC——构建RestFul API的可视化界面

    今天给大家介绍一款工具,这个工具眼下可预见的优点是:自己主动维护最新的接口文档. 我们都知道,接口文档是非常重要的,可是随着代码的不断更新,文档却非常难持续跟着更新,今天要介绍的工具,完美的攻克了这个 ...

  6. 随机点名可视化界面,记录迟到人员,转exe文件

    随机点名可视化界面,记录迟到人员,转exe文件 一.介绍 对于人员采取随机点名 二.代码 import datetime import random from tkinter import * fro ...

  7. Python可视化界面

    可视化界面程序,本来不想写,只在console台运行就好,但是后来很多小伙伴都有这样的需求: 需要从redis中删除某个key的value,然后需要跟key去查,有些小伙伴不会用redis,就产生如下 ...

  8. awt可视化界面上传数据到mysql,jsp通过jdbc方式查询数据库,并将结果打印在网页上

    今天尝试写一个小demo实现下之前看过的代码,目的了解不同文件的数据访问,掌握如何获取前台数据,如何将数据库的数据在前端页面展示. awt可视化界面可已实现提交数据到数据库,也可查询数据在控制台打印. ...

  9. GDB-Dashboard-GDB可视化界面

    项目地址 https://github.com/cyrus-and/gdb-dashboard 项目介绍 gdb-dashboard是一个gdb的可视化界面,可以通过web或者终端来现实可视化信息,支 ...

随机推荐

  1. MBR和GPT分区学习

    1.MBR 早期的windows和linux都采用的MBR的方法来处理开机引导程序和分区表,对于linux的MBR分区来讲,0柱面0磁道1扇区用于引导驱动程序,第一扇区有512个字节,前446字节存放 ...

  2. 如何让Jboss的debug在myeclise上运行

    1.在windows下运行jboss的debug.bat 看见监听的端口 2.打开myeclipse 点击选择 ①你要配置的名字(随意) ②myeclipse中选中该项目 ③jboss的启动的ip地址 ...

  3. snprintf

    snprintf(),函数原型为int snprintf(char *str, size_t size, const char *format, ...).   将可变参数 “…” 按照format的 ...

  4. 洛谷 P1490 买蛋糕

    P1490 买蛋糕 题目描述 野猫过生日,大家当然会送礼物了(咳咳,没送礼物的同志注意了哈!!),由于不知道送什么好,又考虑到实用性等其他问题,大家决定合伙给野猫买一个生日蛋糕.大家不知道最后要买的蛋 ...

  5. MRv2 工作机制 、 公平调度器、MR压缩、边数据

    对于节点数超过 4000 的大型集群,前一节描述的 MapReduce 系统开始面临着扩展的瓶颈. 2010 年 Yahoo 的团队开始设计下一代的 MapReduce. (Yet Another R ...

  6. HDU 4323 Contest 3

    编辑距离,经典的了.动态规划枚举即过. #include <iostream> #include <cstdio> #include <string.h> #inc ...

  7. HDU 1521

    指数型生成函数.做这题时,回去看看组合数学才知道,指数生成函数求的就是多重集合的r排列数. #include <iostream> #include <cstdio> #inc ...

  8. Android BLE与终端通信(三)——client与服务端通信过程以及实现数据通信

    Android BLE与终端通信(三)--client与服务端通信过程以及实现数据通信 前面的终究仅仅是小知识点.上不了台面,也仅仅能算是起到一个科普的作用.而同步到实际的开发上去,今天就来延续前两篇 ...

  9. Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--转

    原文地址:https://dzone.com/articles/scalable-distributed-systems-using-akka-spring-boot-ddd-and-java Whe ...

  10. 终于意识到BIM确实火了

    碰巧遇到一个BIM会议.一大帮国内的老师桠桠叉叉坐了一大屋.听了半天感觉都是在吹BIM如何火.第一次听到这个概念感觉这个能火吗. 昨天雄安新区用BIM建设的新闻出来后,一下子惊了.看来BIM进入计算机 ...