软件开发(js+java开发)的启发
发现了个很重要的意义
1,一个对象,既包含被监听的参数,也包括监听处理本身
2,基于1的开发模式
3,在函数中定义监听器
4,1)高内聚;
统一面向对象,一个功能一个对象
不同对象不互相调用,不互相引用彼此
不同模块放到不同文件中
操作放到函数或则方法中
2)低耦合:
提供参数交互的数据接口
不应该在自己功能模块中出现其他功能模块代码或则文件的引用
任何方法或则函数返回对象都应该是数据(对象),而不应该是其他的“功能对象”(或则自己this)
监听自己this对象的属性,不去耦合非this的对象属性
整个文件不应该耦合具体的html的id和class
为什么界面组件开发的难度特别大:
很多组件之间是平等的(同一层)的关系,但是一个组件发生的改变往往需要其他组件做出相应的操作,这就要求对其他组件相关操作的调用;
而组件之间本不应该互相调用,而应该由上层调用, 但是由于事件源在各组件中,一旦被触发,相当于同层组件产生了调用,这就导致了:
各方法调用成“图”状,而非“树”状。
不能出现:在父层对象没有调用相应方法或则函数的情况下,父层自身的数据遭到改变。(尤其当一个事件产生,数据被自动设置到一个变量中,而不是通过方法调用的方式被设置进变量中,这是不能允许的)
为了当事件源产生而又不在同层组件中互相调用彼此,而尽可能告知父层:自己发生了什么变法,由父层根据变化去调用其他子层的功能模块:
这就要求父层监听子层的变化
对以上研究,作大总结如下(超级心得):
基于视图(界面)事件的程序开发要求如下:
分层:
顶层调用一切子层功能;
父层调用一切子层功能;
----子层不能调用(耦合)父层功能;
--------根本目的:解耦
模块:
任何模块的功能调用只能发生在功能模块内部,不能调用(耦合)其他模块的功能;
----高内聚
监听(两类监听):
1,界面触发事件:事件源可在任何模块,任何层中产生;与之对应的变量应该发生变化;
2,变量触发事件:某一个模块中的变量发生赋值行为;应当使界面有所变化;
数据交换:
1,界面流向变量
2,变量流向界面
----双方应该同步
解决方法:
1,代码分为三大块:
变量:每个功能模块都有对应变量,这个变量保存模块的数据和处理数据的操作(函数或则方法);
初始化操作:每个功能模块的操作,包括:界面操作和变量操作;操作的目的在于使界面数据和变量数据对应;
监听:每个功能模块产生事件而执行的调用不能耦合其他层,更不能越级调用父层,可以通过让父层监听子层的变量来实现子层界面事件产生,而父层实时处理;
2,细则
变量:必须是对象,对象包含两部分:数据+处理对象内部数据的操作
不能在对象中的操作中调用(耦合)界面操作(函数/方法)
在初始化操作时可将相关操作(函数/方法)以变量的形式赋给对象:数据交换操作永远只能出现在初始化操作中。
初始化操作:就只需实现两类数据交换操作;
监听:在初始化操作中实现对界面事件的监听;也可以是初始化操作中实现父层对子层变量的监听
任何情况,都只能是父层监听子层的变量,而不能子层监听父层的变量。
软件开发(js+java开发)的启发的更多相关文章
- [开发工具]Java开发常用的在线工具
注明: 本文转自http://www.hollischuang.com/archives/1459.作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工 ...
- Android开发,java开发程序员常见面试题,求100-200之间的质数,java逻辑代码
public class aa{ public static void main (String args []){ //author:qq986945193 for (int i = 100;i&l ...
- Android开发,java开发程序员常见基础面试题,更换两个变量的值,java逻辑代码
public class abswitch{ public static void main (String args []){ //author:qq986945193 int a=1; int b ...
- day11<Java开发工具&常见对象>
Java开发工具(常见开发工具介绍) Java开发工具(Eclipse中HelloWorld案例以及汉化) Java开发工具(Eclipse的视窗和视图概述) Java开发工具(Eclipse工作空间 ...
- Java开发微信公众号(四)---微信服务器post消息体的接收及消息的处理
在前几节文章中我们讲述了微信公众号环境的搭建.如何接入微信公众平台.以及微信服务器请求消息,响应消息,事件消息以及工具处理类的封装:接下来我们重点说一下-微信服务器post消息体的接收及消息的处理,这 ...
- PHP转JAVA开发30分钟实战攻略
服务端开发中,有很多知识是相通的,例如mysql,redis,http协议等. 基于这些基础,在编程语言上的转变并不困难. 本文主要从下面几点出发,讲述如何快速从php开发转为java开发: 使用框架 ...
- Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725
Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725 1. DSL主要分为三类:外部DSL.内部DSL,以及语言工作台. 1 2. DSL ...
- 转载:做Java开发这一年 (火龙果软件)
转载:http://www.uml.org.cn/success/201410205.asp 从去年到现在,从.NET转向Java开发(只是因为项目原因,绝对与平台好坏没有关系)差不多有一年的时间了. ...
- 勤拂拭软件系列教程 - java web开发
勤拂拭软件工作室持续推出Java Web开发系列教程与案例,供广大朋友分享交流技术经验,帮助喜欢java的朋友们学习进步: 1. 勤拂拭软件 java web 开发教程(1) - 开发环境搭建 勤拂拭 ...
随机推荐
- 如何运行具有奇点的NGC深度学习容器
如何运行具有奇点的NGC深度学习容器 How to Run NGC Deep Learning Containers with Singularity 高性能计算机和人工智能的融合使新的科学突破成为可 ...
- 使用firefox打开网页报错——Error: no display specified
想在linux环境下打开一个网页,环境描述:在窗口模式下,打Terminal,然后从本地服务器ssh到了另一个服务器,想执行firefox命令打开一个网页,如下 [root@pc207 ~]# fir ...
- WordPress安装篇(5):源码编译安装LNMP并部署WordPress
与YUM方式安装相比,源码编译安装方式更灵活,安装过程中能自定义功能和参数,特别是在批量部署服务器又要求软件版本及配置一致时,源码编译安装的优势很明显.本文介绍如何通过源码编译方式安装Nginx1.1 ...
- 【NX二次开发】大开眼界,DLL还可以这么调!
NX二次开发应用程序有交互式.批处理和远程3中模式.交互模式的应用程序(.dll)在NX界面环境下运行.dll以动态链接库的方式被加载到NX的进程空间中.dll可以通过下列几种方式执行. 1.直接激活 ...
- Visual Studio 2019 v16.10 和 v16.11 Preview 1 现已推出!
Visual Studio 2019 v16.10有什么新功能? 我们很高兴地宣布Visual Studio 2019 v16.10 GA 和 v16.11 preview 1发布.此版本使我们的主题 ...
- 什么是DDoS引导程序IP Stresser?
1.什么是IP Stresser? IP Stresser是一款用于测试网络或服务器稳健性的工具.管理员可以运行压力测试,从而确定现有资源(带宽.CPU 等)是否足以处理附加负载. 测试个人网络或服务 ...
- [HNOI2006]公路修建问题题解
题目 题目描述 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织成立了, ...
- js 正则表达式 验证数字或字母
let reg= /^(^[0-9]*$)|(^[A-Za-z]+$)/ /*reg= /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]$/*/ if(!reg.test( ...
- Auto update Python 2.x to 3.x
1, How to check the python version import sys if sys.version_info < (3.0) print ("python ...
- 可执行jar包在windows server2008下的自启动
最近要部署项目的服务端在windows server2008下面,所以把项目打包成可执行的jar包,然后希望它能开机自启动,毕竟每次都在cmd下输入java -jar xxx.jar才能启动太繁琐了. ...