编程模式-表驱动编程

前言         刚开始编程时,往往会碰到一些根据不同条件执行不同功能的情况,通常都是采用if-else或者switch-case的方式,如果有很多的情况需要区分,则会有很多的 else if 或者case的代码处理,整个功能实现完成后,一看代码可能会有很多的else if 或者 case,为了避免这种情...

嵌入式软件架构设计-消息交互

1、前言         在熟悉任务调度、程序分层和模块化编程关于软件架构、分层和模块设计后,除了函数调用设计中出现的情况外,还会遇到同层模块之前如何进行消息交互,通常是应用层之间。         比如一个设备通过架构设计包含人机交互应...

嵌入式软件架构设计-函数调用

1 前言 函数调用很好理解,即使刚学没多久的朋友也知道函数调用是怎么实现的,即调用一个已经封装好的函数,实现某个特定的功能。 把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,然后在其他地方调用即可 2 函数调用方式 函数调用难道还能怎么调用?不就封装好直接调用吗??? 函数调用方式分为两种:直接调用和间接调用 2.1 直接调用 直接调用就是我们...

嵌入式软件架构设计-模块化

1 前言 模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计方法。 比如搭积木,可以用一个个积木模块组合成我们想要的任何样子,而且通过使用相同的积木模块组合成不同的样子 2 为何模块化 为什么要模块化程序设计?那就需要从程序模块化的好处说起!只...

接口的所有权之争

​  在 一文get到SOLID原则的重点 和 SOLDI原则之DIP:依赖倒置原则 里提到过DIP (依赖倒置原则)里提到过接口所有权的问题。今天再次聊下接口所有权。 在《敏捷软件开发:原则、模式与实践》里作者提到了一个开关和台灯设计的例子。 ​ 图1   图1的设计中,Switch 对象可以轮询真实的开关的状态 ,...

嵌入式软件开发之程序架构设计-任务调度

1 前言 在嵌入式MCU软件开发过程中,程序任务调度架构的搭建尤为重要,直接关系到该程序能支持多少功能(随着功能越多系统响应能力越弱,好的任务调度架构能够在保持相同的系统响应能力前提下支持更多的功能),下面介绍三种常用的程序任务调度框架设计方案: 前后台顺序执行法 时间片论法 操作系统 2 程序框架设计 2.1 前后台顺序执行法 这是初学者们常用的程序框架设计方案,不用考...

策略模式在应用中的实践

​ 行为模式有一种模式叫策略模式(Strategy Pattern),一个类的行为或其算法可以在运行时更改。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if...e...

嵌入式软件架构设计-程序分层

1 前言 在嵌入式MCU软件开发过程中,程序分层设计也是重中之重,关系到整个软件开发过程中的协同开发,降低系统软件的复杂度(复杂问题分解)和依赖关系、同时有利于标准化,便于管理各层的程序,提高各层逻辑的复用等。 2 分层介绍 2.1 硬件抽象层(HAL)   嵌入式开发的核心就是芯片,它提供固定的片内资源(常用的有I/O,ISR,TIMER等,稍微好点的还有ADC...

漫画 | 新一代软件架构会影响到谁?

周末的晚上,张大胖照例要去 Hello World 咖啡馆,没想到在这里碰到了好几个老伙计。 感兴趣的小伙伴们,欢迎加入 EventBridge 钉钉讨论群(群号:44552972)! 点击此处,了解更多产品详情~...

PowerDotNet平台化软件架构设计与实现系列(13):应用监控平台

本文再写一篇和具体业务逻辑几乎无关的公共服务应用监控平台。PowerDotNet自研的应用监控平台系统,是服务治理的重要拼图,和服务治理平台配合使用效果更好。 监控开源产品非常丰富,站在巨人的肩膀上,PowerDotNet自研的监控平台,除了基本的监控功能,还可以通过加一层代理,将应用接入开源监控软件,降低应用和监控软件的耦合。 在介绍系统和应用的时候,我们说过应用的一种分法是...