软件模块化|学习笔记

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

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

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


软件模块化


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

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

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

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

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

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

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

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

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

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

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

的,它是 JAVA object 的对象。

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

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

相关文章
|
存储 JavaScript API
vue,uniapp生成二维码
vue,uniapp生成二维码
|
机器学习/深度学习 人工智能 安全
构建未来:AI驱动的自适应网络安全防御系统
【2月更文挑战第15天】 在数字化时代,网络安全已成为全球关注的焦点。传统的安全防御手段在面对日益复杂的网络威胁时显得捉襟见肘。本文将探讨如何利用人工智能(AI)技术构建一个自适应的网络安全防御系统。该系统能够实时分析网络流量,自动识别和响应潜在威胁,从而提供一种更加动态和灵活的安全保护机制。通过深度学习算法的不断进化,这种系统能够预测和适应新型攻击模式,显著提高防御效率和准确性。
|
8月前
|
人工智能 运维 搜索推荐
华为云生态大会2025前瞻:为伙伴们打通行业智能跃迁通路
DeepSeek的连锁反应持续深化,云和AI融合正推动行业新范式。基础模型创新加速,应用从“模型强”转向业务流程优化,AI普及至千行万业。华为云生态大会2025将汇聚4.5万家伙伴,发布600+联合方案,覆盖50+行业场景。大会聚焦新技术、新政策,如“百模千态”和CloudDevice,助力伙伴抓住AI机遇,共创智能生态新纪元。
458 7
|
JavaScript
Vue中 使用定时器 (setInterval、setTimeout)
Vue中 使用定时器 (setInterval、setTimeout)
360 0
|
11月前
|
云安全 人工智能 安全
云安全中心2.0持续演进:防护体系全面化、智能化、轻量化
云安全中心2.0持续演进,防护体系全面化、智能化、轻量化。本次分享由阿里云高级安全产品专家梁雷介绍,涵盖四大方面:云上安全风险趋势与问题、一体化升级方案、客户应用场景及普惠政策。云安全中心从主机工作负载单体防护升级为提供事前、事中、事后的一体化安全运营,新增Serverless形态的云工作负载防护、多云产品检测修复能力、零资源占用的Agentless检测等。同时推出多项免费试用和降价策略,助力用户提升云上安全防护水平。
297 4
|
前端开发 网络协议 Linux
通过hosts文件修改本地域名映射
hosts是一个没有扩展名的系统文件,windows系统里位置在 C:\Windows\System32\drivers\etc,macOS/Linux/iOS/Android位置在 /etc/hosts,其作用就是将一些常用的网址域名与其对应的IP地址建立一个映射关系
|
架构师 持续交付 开发者
代码之禅:从模块化到架构的艺术
【5月更文挑战第26天】 在软件开发的不断进化中,技术栈的深化与技术的模块化构建始终是提升项目可维护性与扩展性的核心。本文将探讨如何通过细致的模块化设计和系统架构思考,实现从代码编写细节到整体架构布局的升华。我们将透过实战案例,深入剖析模块化的重要性,以及它如何影响系统的可维护性、扩展性和性能优化。
|
Android开发 iOS开发 UED
安卓与iOS的较量:谁才是智能手机市场的王者?
本文将深入探讨安卓和iOS两大智能手机操作系统之间的竞争关系,分析它们各自的优势和劣势。通过对比两者在市场份额、用户体验、应用生态等方面的表现,我们将揭示出谁才是真正的市场领导者。无论你是安卓粉丝还是iOS忠实用户,这篇文章都将为你提供一些有趣的观点和见解。
|
机器学习/深度学习 自然语言处理
「AIGC」如何理解大语言模型
Transformer模型,2017年提出,以自注意力为核心,用于序列到序列任务,如机器翻译。它包含多头注意力实现并行处理,提高效率。词汇切分(Tokenization)将文本拆分成子词,增强模型灵活性。嵌入将词汇映射到向量,捕获语义,降低维度。Attention机制允许模型动态分配注意力,有效处理长距离依赖,改善文本理解。
386 0
|
人工智能 大数据 数据中心
算力服务器的崛起:技术革新与市场展望
在数字化浪潮中,算力服务器正经历革命性变化。技术突破如液冷系统提升性能与能效,如宁畅B8000的液冷设计,降低PUE并增强单节点算力。AI服务器市场预计2025年全球达317.9亿美元,中国年复合增长率超19%。国产化趋势明显,如中国电信采用国产芯片服务器。融合架构与绿色节能成为未来关键,适应多变业务需求和环保要求。
331 1