函数内部结构分层浅析(从MVC分层架构联想)

函数内部结构分层浅析(从MVC分层架构联想)

分层架构:一种将软件代码按不同功能进行划分的架构模式。

优点包括:

  • 可维护性:各层职责明确,易于单独修改维护。

  • 可扩展性:方便添加或修改某一层,不影响其他层。

  • 组织性:系统结构清晰,逻辑分明。

  • 团队协作性:团队分工合作,每人专注不同层次开发。

常见的分层如:

  • 表现层:负责用户交互,界面展示。

  • 逻辑层:负责处理业务逻辑。

  • 访问层:负责与数据源通信,数据读写操作。

通过分层,系统能够更高效地开发、部署和管理,有利于应对不断变化的需求和技术发展。

如何进行分层架构的设计?

分层架构设计参考步骤:

1. 明确需求:深入理解系统功能和业务流程。

2. 定义层次:表现层(用户界面)、业务逻辑层(处理业务)、数据访问层(与数据源交互)等,还可能有其他辅助层次。

3. 确定职责:明确界定每个层次具体负任务和功能范围。

4. 接口设计:定义接口,层之间通过接口通信,提高独立性和可维护性。

5. 业务逻辑:在业务逻辑层精心设计业务流程、算法等。

6. 数据访问:规划数据存储、检索、更新等机制,选择合适的数据访问技术。

7. 表现层设计:考虑用户交互体验设计友好。

8. 层间通信:确保数据和指令在各层之间顺畅传递。

MVC(Model-View-Controller)是一种软件架构模式。

MVC主要分为以下三层:

模型层(Model):负责处理数据和业务逻辑,包含数据对象、数据访问层等,与数据库进行交互并管理数据。

视图(View):主要负责数据展示,将模型中的数据呈现给用户。

控制器(Controller):连接模型和视图的桥梁作用,接收用户输入,调用相应模型方法,并选择合适视图来展现处理结果。

对于每一层的内部具体结构,有哪些结构模式?

在 各编程语言中,函数通常称为方法,其标准结构一般如下:

修饰符 返回值类型 方法名(参数类型 参数名,...) {

       // 方法体

       // 包含具体的代码逻辑

       1.参数处理,以及参数检验

       2.查询,基于参数的与数据库数据源交互。

       3.业务逻辑处理。

      4.数据流向下一个层,数据展示或者存储。


       return 返回值;

       // 如果有返回值

}

 

通过以下方式来体现函数的分层结构:

1.参数处理,以及参数检验

2.查询,基于参数的与数据库数据源交互。

3.业务逻辑处理。

4.数据流向下一个层,数据展示或者存储。

这样就形成了一个简单的 函数内部分层结构。

函数分层结构的设计需要遵循哪些原则?

设计函数分层结构通常需要遵循以下原则:

1. 单一职责原则:每个函数应专注于一项明确的任务,避免功能过于复杂和混杂。

2. 高内聚低耦合原则:层内的函数要紧密相关、高度内聚,层与层之间的依赖要尽量松散、低耦合。

3. 接口隔离原则:定义接口供层与层之间交互,避免不必要依赖和复杂定义。

4. 可维护性原则:便于后续修改、扩展和维护。

5. 抽象化原则:高层函数可以基于更抽象的概念,底层函数实现具体细节。

6. 稳定性原则:让底层函数稳定,减少对上层的影响。

7.复用性原则:设计函数时考虑可复用性,以便在其他场景中能重复利用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/745080.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML5五十六个民族网站模板源码

文章目录 1.设计来源高山族1.1 登录界面演示1.2 注册界面演示1.3 首页界面演示1.4 中国民族界面演示1.5 关于高山族界面演示1.6 联系我们界面演示 2.效果和源码2.1 动态效果2.2 源代码2.3 源码目录 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.ne…

《Redis设计与实现》阅读总结-2

第 7 章 压缩列表 1. 概念: 压缩列表是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项,并且每个列表项是小整数值或长度比较短的字符串,那么Redis就会使用压缩类别来做列表键的底层实现。哈希键里面包含的所有键和值都是最小…

TEC相关专利研究

每天一篇行业发展资讯,让大家更及时了解外面的世界。 更多资讯,请关注B站/公众号【莱歌数字】,有视频教程~~ 关于TEC在电子行业的部署有很多讨论,这些专利显示了不同发明者关注的一些显著特征。下面的表1列出了本期将审查的专利…

【动态内存】详解

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

AI实战案例!如何运用SD完成运营设计海报?玩转Stable Diffusion必知的3大绝技

大家好我是安琪! Satble Diffusion 给视觉设计带来了前所未有的可能性和机会,它为设计师提供了更多选择和工具的同时,也改变了设计师的角色和设计流程。然而,设计师与人工智能软件的协作和创新能力仍然是不可或缺的。接下来我将从…

Java 中 String 类

目录 1 常用方法 1.1 字符串构造 1.2 字符串包含的成员 1.3 String 对象的比较 1.4 字符串查找 1.5 转化 1.5.1 数值和字符串转化 1.5.2 大小写转化 1.5.3 字符串转数组 1.5.4 格式化 1.6 字符串替换 1.7 字符串拆分 1.8 字符串截取 1.9 其他操作方法 1.10 字符…

DDR3控制器(一)DDR3 IP调用

目录 一、DDR3 IP核简介 二、DDR3 IP核调用 在千兆以太网通信中用到了DDR3控制器,但是并没有对其做相关介绍。这次准备重新整理一下DDR3控制相关知识,复习巩固一下。 一、DDR3 IP核简介 MIG IP核(Memory Interface Generator)是…

SiLM585x系列SiLM5851NHCG-DG一款具有分离的管脚输出 单通道隔离驱动器 拥有强劲的驱动能力

SiLM585x系列SiLM5851NHCG-DG是一款单通道隔离驱动器,具有分离的管脚输出,提供3.0A源电流和6.0A灌电流。主动保护功能包括退饱和过流检测、UVLO、隔离故障报警和 2.5A 米勒钳位。输入侧电源的工作电压为3V至5.5V,输出侧电源的工作电压范围为1…

计算机毕业设计Thinkphp/Laravel学生考勤管理系统zyoqy

管理员登录学生考勤管理系统后,可以对首页、个人中心、公告信息管理、年级管理、专业管理、班级管理、学生管理、教师管理、课程信息管理、学生选课管理、课程签到管理、请假申请管理、销假申请管理等功能进行相应操作,如图5-2所示。学生登录进入学生考勤…

一天跌20%,近500只下跌,低价可转债为何不香了?

6月以来,Wind可转债低价指数累计下跌7.3%,大幅跑输中价、高价转债。分析认为,市场调整的底层逻辑在于投资者对风险的重新评估和流动性的紧缩,宏观经济的波动和政策环境的不确定性、市场结构性的变化均对低价可转债市场产生了冲击。…

ai智能写作助手有哪些?3款AI工具推荐

ai智能写作助手有哪些?在数字化时代的浪潮中,AI智能写作助手如同智慧的灯塔,照亮了创作者们的道路。它们不仅极大地提升了写作效率,让文字流淌更加顺畅,更能够深入挖掘和激发创作者的内在灵感,将创意的火花…

RK3568平台开发系列讲解(I2C篇)利用逻辑分析仪进行I2C总线的全面分析

🚀返回专栏总目录 文章目录 1. 基础协议1.1. 协议简介1.2. 物理信号1.3. 总线连接沉淀、分享、成长,让自己和他人都能有所收获!😄 1. 基础协议 1.1. 协议简介 IIC-BUS(Inter-IntegratedCircuit Bus)最早是由PHilip半导体(现在被NXP收购)于1982年开发。 主要是用来方…

MYSQL 将某个字段赋值当前时间

如 我们需要将use_time 赋值为当前时间: 准备三条数据 : 执行sql ,2种当前时间赋值函数,1种关键字赋值 : update test_info SET use_timeNOW() WHERE id 1; update test_info SET use_timeCURRENT_TIMESTAMP() …

C++并发之阻塞队列(block,queue)

目录 1 概述2 实现3 测试3 运行 1 概述 最近研究了C11的并发编程的线程/互斥/锁/条件变量,利用互斥/锁/条件变量实现一个支持多线程并发的阻塞队列,队列大小没有限制。 阻塞队列是一个模板类,有两个模块参数,参数1是元素类型&…

【芯片】MCU的分类

MCU又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器(Central Process Unit;CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都…

MySQL报错Duplicate entry ‘0‘ for key ‘PRIMARY‘

报错现场 现象解释 因为你在插入时没有给 Customer.Id 赋值,MySQL 会倾向于赋值为 NULL。但是主键不能为 NULL,所以 MySQL 帮了你一个忙,将值转换为 0。这样,在第二次插入时就会出现冲突(如果已经有一条记录为 0&…

第二证券:什么是破净股票?破净股票好还是不好?

一家公司手上掌握的财物包含实物财物、公司注册资金、未分配利润、各种公积金及品牌价值等等,一家公司的负债包含贷款、应付款、其他公司给的预付款等等。公司的总财物减去总负债后得到的净财物,再除以股票总数,就是公司的每股净财物&#xf…

【LM-Debugger】让研究人员与开发者能够深入洞察并干预模型的预测过程,开启了模型透明度和可解释性的一扇新门

背景 基于 Transformer 的语言模型 (LM) 是现代 NLP 模型的支柱,但其内部预测构建过程不透明。这对于不了解模型为何做出特定预测的最终用户以及希望调试或修复模型行为的开发人员来说都是个问题用于检查和干预基于转换器的语言模型的交互式工具项目地址&#xff1…

React的Redux的状态管理

步骤 1.创建新项目 npx create-react-app react-redux 2.安装配套工具 npm i reduxjs/toolkit react-redux 3.启动项目 npm run start 4.在src目录下创建store文件夹 5.在store文件夹下创建modules文件夹 6.在store文件夹里创建index.js文件 7.在counterStore.js文件…

【扩散模型(二)】IP-Adapter 从条件分支的视角,快速理解相关的可控生成研究

系列文章目录 【扩散模型(一)】中介绍了 Stable Diffusion 可以被理解为重建分支(reconstruction branch)和条件分支(condition branch)本文将从该视角快速理解 IP-Adapter 以及相关可控生成研究。 文章目…