软件模块化|学习笔记

简介: 快速学习软件模块化

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术软件模块化学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15899


软件模块化


模块化是控制软件复杂性的一个最基本的技巧,也就是会把软件分成若干个模块,在分成若干个模块以后就可以让不同的人去开发不同的模块,或者在一个长时间的开发过程中间,可以在不同的时间去开发不同的模块,从而使得一个复杂的软件系统可以通过多人的协作或者通过一步一步的实现来完成整个系统的开发。

那软件的模块化的方法,除了所熟知的按照功能的原则来分软件的模块以外,其实还有一种更重要的按照层次结构的方式来划分软件的方法,这种方法是把软件分成若干个层次,那最简单的分法就是把软件分成两层,一层是用于实现界面的视图层,它是整个程序的外壳,它里头只包含了这个界面长什么样子以及界面上的数据是如何被输入和输出的,而另外一层则是负责整个系统的逻辑以及数据的存储的逻

辑层,那它是整个系统的核心。

在这两层里,界面层相对比较直接,所以说它一般会使用面向功能的方式去做设计,而逻辑层相对比较复杂,所以它会使用这个面向对象的方式来设计这个逻辑

层,那由于这两层设计的方法是完全不同的,所以说它所体现出来的样子是不一样的,在界面层体现出来的是功能,在逻辑层体现出来的是逻辑对象。

那这两层之间就存在着一个差异,所以需要在这个界面层或者视图层和活性层之间插入一个中间层,这个中间层把它称之为控制器层,把面向对象的设计转换成为面向功能所需要的这样的一个API,同样这个控制器层也负责把数据从视图层转换成为逻辑层所需要的一个数据。为了实现更小的模块化的划分,可以把其中复杂的模型层细分成为若干个更小的层次,比如负责业务逻辑的服务层、负责获取数据组装成对象的数据访问层以及负责数据对象模型向数据库的关系模型去转换的映射层以

及最后数据的载体实体层。

每一层都有自己的职责,那用城市分割以后就可以得到一个更细的模块划分,而且

每一个功能就是常说的每一个功能,其实从上到下贯穿了这所有的层次,从界面层跟界面有关的代码在界面层,然后跟逻辑有关的代码在这个服务层,跟数据存储有关的代码在数据访问层和映射层,那最后数据以及跟数据逻辑密切相关的代码在实体层,这样更细致的划分使得整个的系统结构会更加的简单,因为知道把模块化的更细,其实每一个部分的问题也就更加的简单,而且不同层会采用不同的技术来实现每一层都可以独立的测试。

代码的变更也可以更有效的控制在同层之内不会影响其他的层次。在系统被分为不同的层次以后可以用不同的技术去实现不同的层,比如说在前面所说的分层结构中间可以用 vivo 的框架或者微信的小程序去实现它的视图层,可以用 MVC 去实现它的控制器层,把它变成一个 restful 的 API,用 spring 容器的冰对象去实现它的服务层,去实现它的业务逻辑。

对于数据访问层和映射层,可以使用 Redis 和 MyBatis 的数据库去实现数据访问层和关系对象和对象模型转换的映射程,那最后的实体层不依赖于任何的框架技术

的,它是 JAVA object 的对象。

把这样的一个分层结构,除了能够把系统变成更成的模块,用不同的技术去实现以外,它也会影响把它部署在物理服务器上面的状况,不同的层次是可以部署在不同的物理服务器上的,比如一般的做法来说都会把视图层单独部署在一台外部服务器上,在这台服务器上面只存储了静态的网页和静态的图片,到它的后面的层次,它的模型层则会部署在这个应用服务器上,而数据则会存储在数据库服务器上,这样

通过把不同的部分部署在不同的服务器上会提高系统服务器的整体性能。

相关文章
|
6月前
|
前端开发 JavaScript jenkins
构建高效前端项目:从模块化到自动化
【2月更文挑战第13天】 随着Web技术的不断进步,前端项目的复杂性日益增加。为了确保可维护性和性能,前端工程师必须采用模块化和自动化的策略来优化开发流程。本文将探讨如何使用现代前端工具和最佳实践来构建一个高效的前端项目架构,包括模块打包、代码分割和持续集成等方面。
|
5月前
|
Linux API 云计算
探索Linux操作系统的模块化设计
【6月更文挑战第12天】本文深入探讨了Linux操作系统的模块化设计,揭示了其背后的技术原理与实践应用。通过分析Linux内核的模块化特性,我们了解到这一设计如何促进了系统的灵活性、可维护性以及安全性。文章将详细阐述模块加载机制、模块间的通信方式以及模块化给系统开发和维护带来的影响。
|
6月前
|
XML 安全 测试技术
LabVIEW大型项目开发提高质量的工具
LabVIEW大型项目开发提高质量的工具
77 2
|
6月前
|
缓存 编译器 测试技术
简化 CMake 多平台兼容性处理:高效开发的秘诀
简化 CMake 多平台兼容性处理:高效开发的秘诀
220 0
|
6月前
|
缓存 JSON 前端开发
前端模块化的前世今生(上)
前端模块化的前世今生(上)
110 0
|
6月前
|
自然语言处理 JavaScript 前端开发
前端模块化的前世今生(下)
前端模块化的前世今生(下)
谈谈嵌入式应用软件人机界面开发的菜单框架编写
谈谈嵌入式应用软件人机界面开发的菜单框架编写
98 0
|
缓存 JavaScript 前端开发
前端模块化 #116
前端模块化 #116
103 0
|
设计模式 缓存 前端开发
骚年,你对前端模块化了解多少
不管是前端老司机还是刚接触前端的"菜鸟"。模块化想必在每天工作中,或多或少都会接触到。尤其针对一些针对React、Vue开发的同学来说,那就是每天都会脱口而出的一个必备术语。并且在很多技术文档中,都常常看到AMD、UMD、COMMONJS还有ES6中的module。 但是,模块化的本质是什么!前端是如何从"茹毛饮血"的<script>到现在es6的module的呢。 今天我们就来唠唠这段鲜为人知的故事。
107 0
|
开发框架 前端开发 JavaScript
开发人员必须了解的 10 大前端开发工具
近几年里,前端技术发展十分迅速。如果您是一个网络开发爱好者,那么您一定知道一个好的前端对商业运作的重要性。这里码匠将发布这篇前端开发工具指南,向读者介绍几款开发者常用的前端开发工具,希望能对您有所帮助。
1256 2
开发人员必须了解的 10 大前端开发工具