系统设计模式一

今天我要介绍的第一个模式,很多人应该都很熟悉,就是MVC。

在大师们的设计模式书籍中都有提及该模式。而我只是要总结一下,在系统设计中的应用。

MVC是Model/View/Control的缩写,指的是模型/视图/控制。

模型,通常我们指数据模型。

视图,我们指的是与用户的交互界面。

控制,我们指业务逻辑。

最经典的例子是MFC中的Document/View模型。该模型将业务逻辑混合在视图和模型之中,只是将视图与模型独立开。这样,你可以用折线图表示数据,也可以用表格表示数据,而不需要修改模型。这是我们在编程过程中对该模式最常使用的方式。

那么,我们还有别的使用方式吗?

答案是有的。

当我们把眼界从一个程序扩展到一个应用时,我们会发现MVC模式产生了一种魔法效应。让我们看看WinCVS、WinRAR这些应用。打开这些应用的文件夹,他们由几个应用程序组成,WinRAR,RAR,UnRAR。其中RAR、UnRAR就是模式中的MC。WinRAR就是模式中的View。用户在操作WinRAR压缩或解压缩文件的时候,实际是在调用RAR和UnRAR。你也可以直接使用RAR、UnRAR的命令行方式操作文件。

这种方式的好处在于,直接将开发者的关注焦点从繁琐的界面编程中解脱出来。把精力集中到真正的业务逻辑中去。并且使得交互界面逻辑独立、修改更方便。且不会影响业务核心。其实使用这种模式的不仅仅是小软件,如VC中的编译器与IDE系统的分离,也是该模式的经典例子。

让我们再把眼界放置到一个系统中。最为典型的莫过于Web系统。其首先是一个B/S模式(该模式后面应该还会专门提到),但它其实也是MVC模式。其服务器端的数据库正是MVC中的模型。而服务器端运行的PHP、JSP、ASP等脚本则是MVC中的控制。客户端的浏览器和页面就是MVC中的视图。在这个模型中,我和大多数人一样,都会有个误区,就是把视图中用于视图展现的逻辑归结为控制,如多级菜单的显示。其实这些都只是我们展现数据的方式,无论是用AJAX或者Frame框架或者别的什么花哨的技术,这些都只是数据展现的方式,而不是业务逻辑,所以它们都只是视图。在这里,我们使用MVC模式得到了分布式运算的好处。

其实在Vasta中,微软利用xaml和它的C#、VB更是把该模式发挥到了极致。有兴趣的,可以进一步研究一下。^_^!

 

 

右腿驱动电路设计:从共模干扰原理到生物电采集实战 在生物电信号采集领域,共模干扰是影响测量精度的核心挑战之一,其本质源于环境电磁场通过容性耦合在人体表面产生的感应电流。根据欧姆定律,由于人体组织阻抗的不均衡性,共模电流会在不同测量点产生差异化的压降,从而转化为难以滤除的差分噪声。为解决这一问题,右腿驱动技术应运而生,它通过负反馈原理主动抵消干扰,显著提升系统的共模抑制比。该技术广泛应用于心电图、脑电图等医疗电子设备中,是确保微弱生理信号质量的关键环节。本文结合工程实践,深入剖析了右腿驱动电路中的仪表放大器选型、反馈环路稳定性设计以及PCB布局布线要点,为高 阅读详情

相关推荐

基于STM32与OV7670的嵌入式视频监控系统设计与实现

本文详细介绍了基于STM32单片机与OV7670摄像头的嵌入式视频监控系统设计与实现。从硬件选型、电路设计到软件开发,涵盖了摄像头驱动、TFT显示优化及图像处理等关键技术,提供了实用的调试技巧和性能优化方案,为低成本、高效率的视频监控系统开发提供完整解决方案。

desk3的博客 803

软件架构风格总结以及场景应用

数据流风格:有批处理风格、管道-过滤器调用/返回风格:有主程序/子程序、面向对象、层次结构等独立构件风格:有进程通信、事件驱动风格、发布-订阅风格等虚拟机风格:有解释器、基于规则的系统等仓库风格:有数据库系统、黑板系统、超文本系统等过程控制风格:有开环、闭环等其他未分类的架构风格:有C2、异构风格、混合风格等。

码农研究僧的博客 5849

避坑指南:LVGL在Arduino环境编译报错?3步搞定lv_conf.h路径问题(附ST7789屏幕调试技巧)

本文详细解析了在Arduino环境中配置LVGL图形库时,如何解决常见的“lv_conf.h file not found”编译报错问题。通过三步法:定位并复制模板文件、启用核心配置并指定路径、配置基础参数,从根本上解决路径问题。文章还结合ST7789屏幕驱动,分享了使用TFT_eSPI库进行显示适配、内存优化及背光控制等实战调试技巧,帮助开发者建立清晰、可维护的嵌入式UI工程基础。

lake5的博客 860

每天一个数据分析题(五十二)

某公司在设计产品外观时,有两种不同的方案,能够帮助公司选择更优方案的方法是( )

shiguangre的博客 91

【AI赋能】Sora + CapCut 打造爆款短视频:从脚本到发布的自动化工作流

本文详细介绍了如何利用Sora、Grok和CapCut等AI工具构建自动化短视频生产工作流。通过结构化Prompt生成专业脚本,借助Sora将文字转化为高质量视频素材,并利用CapCut进行高效剪辑与合成,实现从创意到发布的十倍效率提升,助力个人及团队打造爆款内容。

g8f9d0s1a2的博客 499

[网络安全提高篇] 一二九.Powershell恶意代码检测 (5)混淆和反混淆 [上]

前文介绍了如何利用MS Defender实现恶意样本家族批量标注。这篇文章将继续讲解Powershell恶意代码检测,主要包括PowerShell混淆与反混淆内容,首先结合Invoke-Obfuscation工具详细介绍PowerShell代码混淆方法,再结合PowerDecode工具阐述解混淆方法。该研究将为后续的恶意软件家族分类或溯源提供帮助。未完待续,基础性文章,希望您喜欢,且看且珍惜。

杨秀璋的专栏 1541

系统分析与设计复习--(三)系统的需求分析

系统需求概述 在什么场景下,用户通过系统,做什么事情 基于场景的需求才是真正的需求 需求分类: 大众需求 VS 小众需求 强需求(必要的) VS 弱需求(锦上添花的) 高频需求 VS 低频需求 刚需:某一类人的必要需求(重点:独特性 必要性) 关于刚需的一些误区: 找不准刚需就找不准切入点 使用错误的实操工具 就算实操工具满足了部分需求 但是不等同于刚需 有些需求是可以被创造的 ...

weixin_41032724的博客 6550

MuJoCo 入门教程(二)

本章介绍 MuJoCo 的数学和算法基础。对于熟悉广义或关节坐标建模和仿真的读者来说,整体框架是相当标准的。因此,我们将对这些材料进行简要总结。本章的大部分篇幅用于介绍我们如何处理接触和其他约束条件。这种方法是基于我们最近的研究,也是 MuJoCo 所独有的,因此我们花时间对其进行了详细的激励和解释。更多信息可参见下面的论文,尽管本章中的一些技术思想是新的,在其他地方还没有描述过。

机器人控制与仿真应用 3713

详谈软件工程之系统设计模式

详谈软件工程之系统设计模式一:人机界面设计1、至于用户控制之下:2、减少用户的记忆负担3、保持界面的一致性:二、结构化设计1、结构化设计需要遵循的原则:(1)抽象化(2)自顶向下、逐步求精(3)信息隐蔽(4)模块独立(高内聚、低耦合)三、面向对象设计1、面向对象设计的基本过程2、设计原则3、设计模式的概念4、设计模式的分类(1)创建型模式:(2)结构型模式:(3)行为性模式: 题外话:本博客讲的......

华星详谈的博客 3559

UCIE Specification详解(三)

Protocol Layer(协议层)以及Die-to-Die Adapter

Crazzy_M的博客 1764

产品缺陷检测:表面缺陷检测_(1).产品缺陷检测基础理论

确定像素之间的相似性准则,如灰度值的差异。

zhubeibei168的博客 832

GoF23

文章目录1. 设计模式概述1.1 什么是设计模式1.2 学习设计模式的意义1.3 设计模式的基本要素1.4 GoF232.OOP七大原则3.单例模式4.工厂模式5.抽象工厂模式6.建造者模式 1. 设计模式概述 1.1 什么是设计模式 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。 1995年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:

XXMRXXX的博客 496

Open3D——点云构建Delaunay三角网【2026最新版】

点云构建Delaunay三角网

点云侠的博客 8368

HarmonyOS6半年磨一剑 - RcImage组件填充模式与形状系统设计(一)

各位开发者,大家好!我是若城。在鸿蒙应用开发过程中,我发现许多组件样式和工具方法具有高度的复用性,但每次新项目都需要重复编写,这极大地降低了开发效率。因此,我决定投入半年时间,打造一款专为鸿蒙生态设计的 UI 组件库 ——rchoui。rchoui是一个面向 HarmonyOS6 的企业级 UI 组件库,旨在提供开箱即用的高质量组件,让开发者告别"重复造轮子"。

全栈若城,专注知识分享 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java系统设计uml_Java设计模式(一)UML总结

定义统一建模语言(英语: Unified Modeling Language ,缩写UML)是非专利的第三代建模和规约语言。UML特点UML是一种开放的方法用于说明、可视化、构建和编写一个正在开发的面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。UML2.2分类UML2.2中一共定义了14种...

weixin_30613239的博客 270

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

设计模式(2) 工厂模式 ( 一 ) 学生成绩管理系统设计

最近在做课程设计——学生成绩管理系统角色有:老师,学生,课程老师,学生,课程都继承同一个接口 Entity我采用工厂模式,一个接口工厂,三种不同的工厂,每种工厂分别产老师,学生和课程通过工厂把产生的不同种类的 Entity 收集起来,由接口的工厂统一释放内存。以下是程序分块:Entity 实体定义:class Entity { protected: int NO ; public: strin...

Fluence_YHL 1802

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

《时间触发嵌入式系统设计模式》源码

《时间触发嵌入式系统设计模式》源码 【下载地址】时间触发嵌入式系统设计模式源码 探索嵌入式系统设计的精髓,本开源项目提供《时间触发嵌入式系统设计模式》一书的完整源码,助你深入理解并实践书中核心设计模式。包含丰富的示例程序,从基础到高级,逐步引导你掌握时间触发系统的设计技巧。无论是嵌入式开发新手还是资深工程师,都能从中获得...

gitblog_06748的博客 275

设计模式(2) 抽象工厂(一) 学生成绩管理系统设计

续上篇 工厂模式(一) 学生成绩管理设计 一个实体"根类" Entity , 派生出三种类——老师,学生,课程 一个接口工厂,派生出三种工厂,分别 Create 老师,学生,课程 可以考虑,不同学院之间的老师,学生,课程是不同的,例如计算机学院和经济管理学院的教师(假设无重叠),学生,课程(课程大多是不同的)。 现在,我想要产生老师的工厂,可以产生不同学院的老师,例如——这个特制工厂,可以...

Fluence_YHL 596

发布-订阅消息模式

一、 订阅杂志我们很多人都订过杂志,其过程很简单。只要告诉邮局我们所要订的杂志名、投递的地址,付了钱就OK。出版社定期会将出版的杂志交给邮局,邮局会根据订阅的列表,将杂志送达消费者手中。这样我们就可以看到每一期精彩的杂志了。 仔细思考一下订杂志的过程,我们会发现这样几个特点:1、 消费者订杂志不需要直接找出版社;2、 出版社只需要把杂志交给邮局;3、 邮局将杂志送达消费者。邮局在整个过

服务 开放 创新 6300

哇塞!第一次见这么全面的“高并发系统设计模式”,一听就明明白白,附带笔记课件!

前言 在现今IT界特别是程序员,如果你对于高并发都没有接触和了解过未免也有些太孤陋寡闻,而作为一个优秀的程序员,高并发系统架构设计师必须要掌握的。很简单,现在大多数互联网公司都会用到高并发系统架构设计。像常见的"秒杀活动"、"抢红包"、"微博热搜"、"12306抢票"、"共享单车拉新"等都是高并发的典型业务场景,能解决这些业务常见的程序员那都是公司的一把好手,不说多了年薪30W那是妥妥的。 温馨提示:本文篇幅有点过长为了不影响阅读,有些地方是以图片形式展现,相信看完后会对大家有很大的启发和帮助。

如果频繁就私信一下呢 845

敏捷软件开发 - 原则、模式与实践

起源 《敏捷软件开发 - 原则、模式与实践》是我接触到的第一本系统介绍软件设计的书籍,深刻影响了个人的软件开发习惯。它并不难懂,我一直推荐给身边的各个层次的程序员学习。 可对于一本接近500页的图书,很多人还是望而却步。一直都想写个关于这本书的速读,使更多的人了解它。但是最近又重新学习了一遍发现它之所以有价值不仅仅在于书中总结的原则和模式,更在于它提供的如何运用这些原则、模式的实践例子。忽略了大量...

feifeilb的博客 2377

顶格博客:Java设计模式之单例模式

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。

顶格博客 281

【设计模式攻略】结构型模式之Bridge模式

概要 先考虑下在通信,电子等很多领域都常用的桥接概念,它的作用是什么?第一,它可以连接两个区域,第二,它可以隔离两个区域,简单来说也就是连接与分离的作用。而这里的 Bridge模式也是类似,它可以分离系统的不同层次,使不同层次的实现可以相互独立的变化,同时它又为不同层次间建立起了连接进行交互。 目的 对 Bridge模式,比较教条或比较官方的定义是,可以分离抽象与实现,并使它们可以相

my_business的专栏 1938

设计模式实际工作实践——桥梁模式

设计模式实际工作实践——桥梁模式 阅读引导: 1、多维度分析。 2、适用于有可能多个维度组合形成一个场景,并且各个维度可能分别演化的场景 3、为自己工作,为自己的系统工作,做自己的老板,形成正循环:打磨当前工作的核心关键能力——>高效能工作——>更多时间打磨自己的系统——>更高效能工作——>打磨下个层次工作的核心关键能力…… 4、核心竞争力,是指你拥有的(独特的)知识经验组合,经过你思维逻辑的组织梳理,在实践中产生无可替代的价值。打造自己的TMS系统(T:专业技术;M:沟通管理、S

架构突围 263

Java设计模式全集-享元模式(FlyWeight)

享元模式(FlyWeight) 享元模式更多的应该算是一种思想,即对可复用资源的重复利用,例如java的字符串常量池,数据库连接池,线程池等等相关的池化技术都可以算是对享元设计模式的一种运用 demo /** * java字符串常量池的判断 * * @author xiaoyingge * @description * @date 2020/4/25 12:29 */ publi...

小萤哥的博客 200

结构型模式-装饰模式(扩展系统功能)

目录 1. 定义 2. 结构 3. 代码实现 4. 透明装饰模式与半透明装饰模式 4.1 透明装饰模式 4.2 半透明装饰模式 5. 注意事项 6. 优缺点 7. 适用场景 8. 个人...

weixin_30809173的博客 124
上一篇: 软件系统设计的模式
下一篇: 系统设计模式二
cpsoft
博客等级 码龄26年 9粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值