刷新
轻量级多级菜单控制框架程序(C语言)

博主头像 1、前言 作为嵌入式软件开发,可能经常会使用命令行或者显示屏等设备实现人机交互的功能,功能中通常情况都包含 UI 菜单设计;很多开发人员都会有自己的菜单框架模块,防止重复造轮子,网上有很多这种菜单框架的代码,但是大多耦合性太强,无法独立出来适配不同的菜单设计。 本文介绍一个降低了耦合性,完全独立的菜 ...

戏说领域驱动设计(廿六)——再谈事务

有关事务的内容,在前面我们已经不只谈过一次,没办法,这是一个绕不开的话题。你敢说你在开发中不用到它?最起码聚合进行序列化的时候得启动一个本地事务吧。当然了,如果你用的是NoSQL,则另当别论,咱也就别抬那个杠了。你必须承认的事实就是无论现在的NoSQL数据库怎么发展,关系型的数据库仍然是业务系统中的 ...

戏说领域驱动设计(廿五)——领域事件

任何事物都在变化着包括领域驱动设计这门学问。Evans在首次提到DDD概念后,后来出现了陆续又出现了很多的专家与学者对其理论进行了扩充比如:“领域事件”、“事件源”、“命令查询责任分离”等。也正是由于这些补充,不仅让DDD的适用范围变得更大也让后来出现的微服务架构系统受益良多,为系统落地提供了非常优 ...

后端接口对接注意事项

博主头像 后端接口对接的模式范本: 概念澄清: 【下单】是个广义上的叫法,并不仅限于支付订单的订单。因为整个过程都围绕一个【seqNo】订单号或流水号这个唯一标识展开,因而统称【下单】。 【下单】可以是为派发一个优惠券、申请一个支付订单、申请一个发票等等。 【seqNo】也可以叫orderNo,有唯一性,每次 ...

戏说领域驱动设计(廿三)——工厂

在讲解实体的章节中我们曾经介绍说过如何有效的创建实体,主要包括两种方式:工厂和构造函数。本章我们工厂进行一下详解,这种东西能有效的简化实体使用的难度,毕竟你无法通过Spring这种容器来管理领域对象。实际的开发过程中,工厂的使用要比书中的讲解会复杂一点,所以在本章我会对实践中遇到的一些问题以及使用什 ...

戏说领域驱动设计(廿二)——聚合

聚合的自白 大家好,我是聚合,在你们的期盼之下我终于出来了。其实早就想和大家见一面,不过作者每天总想着水流量,到现在才让我出来。他把实体和值对象这两个我家庭内的成员先介绍让我感觉非常的不公平。没有国哪有家?没有家庭,生活也不会温暖。好多的工程师眼里只想着实体他们,让我难受的想要哭泣。明明是由于我的存 ...

领域驱动设计(3) DDD设计流程

战略设计 产品愿景与场景分析 领域建模 微服务拆分 战术设计 分析微服务领域对象 设计微服务代码结构 DDD整体包含战略设计和战术设计两部分。战略设计过程会从业务视角出发,进行场景分析、领域建模,并划分领域边界、建立通用语言、确定限界上下文;战术设计则关注如何将模型转化为软件实现,涉及聚合根、实体、 ...

戏说领域驱动设计(廿一)——领域服务

实体对象和值对象都写完了,本想开始写资源仓库顺便把工作单元再搞搞。不过有一点麻烦的是我不太想把工作单元作为单独的一章来写,一是这东西网上相关的内容太多;二是有的时候使用Spirng的事务就解决了,没觉得有多大作用。不过先不纠结这些,还是按本章的主题写领域服务吧,这好讲,谁不喜欢简单的东西。 一、为啥 ...

戏说领域驱动设计(二十)——值对象

值对象这个东西在DDD里算是比较抽象的,好多人学了半天也学不明白。我这种聪明人也费了好大劲,总算苦心人天不负,现在也能用个有模有样了。战术模式中不论是领域服务、对象工厂还是资源库,基本上您能听懂是什么意思,在BO层中所承担的角色也比较明确,唯独这个值对象有点坑爹。遥想当年我在使用C#的时候,里面有一 ...

戏说领域驱动设计(十九)——外验

内验是针对领域模型自身的验证,其验证规则也是由领域模型自已来完成,只是触发的时机可能在工厂中也可能在构造函数中。与内验对应的当然就是外验了,这是用于对用户的输入和业务流程的前提或得更专业一点叫“前置条件”的检验。如果细化一点,可以将外验分成两个情况:用户输入和业务流程的前置条件。情况不同验证的方式也 ...

戏说领域驱动设计(十八)——内验

验证在我们现实的生活中非常常见,比如您找工作得先整个面试验证你的能力是否靠谱;找对象得先验证下对方的颜值和升值空间。有些工程师写代码从不验证,我觉得是有三个原因,一是意识不够,过于相信前端或外部服务;二是个人缺少主动思考的能力;三是团队负责人的问题,您都当了领导了为什么不制定一些基本开发规则给团队树 ...

戏说领域驱动设计(十七)——实体实战

上一节中讲了实体的一些概念,作为DDD中最为复杂的组件,想用好了还需要在实践中慢慢去摸索,都是摸爬滚打过来的。本章着重演示一些实体相关的代码,通过建立一个基类和通用方法,能让您在开发过程中少写一些重复的代码同时也减少在使用第三方开源框架时的学习成本。此外,是从0写代码,不需要付出太多的精力便可以加深 ...

戏说领域驱动设计(十六)——实体概念

现在开始正式的进入战术部分,我看前面发的一些文章,只要有代码的阅读量就高,没代码的就差太多了,难道是因为平台只要看到代码才会加强推荐吗?真要是这样那我是真醉了,其实学习DDD光看代码还真不行,需要很多理论支持的。如果您是新的读者我建议先把前面的内容都翻看一下,至少得有一些理论依据作支撑后面学习起来才 ...

领域驱动设计(1) DDD的一些基础概念

什么是DDD DDD的特点 战略设计、战术设计 DDD在微服务中解决的问题 DDD的好处与局限 领域 领域、子域 核心域、通用域、支撑域 通用语言、限界上下文 通用语言 限界上下文 实体、值对象 实体 值对象 聚合和聚合根 聚合 聚合根 如何设计聚合 聚合的设计原则 什么是DDD 看了一些DDD的介 ...

戏说领域驱动设计(十五)——内核元素

前面细讲了基于CQS的4层架构,其中的领域模型层也就是六边型架构中的内核在整个开发流程中工作占比最大,也是需要工程师最需要关注地方。那么话说回来了,里面到底包含了什么东西需要投入如此高的关注度。答案还用说?必然是领域模型啊,比如实体、值类型、业务服务等,您别忘了咱们讲的是领域驱动设计。具体可参看如下 ...

戏说领域驱动设计(十四)——补遗

写了好几章的东西,再回头读的时候发现有些内容写的不理想,没有表达出自己所想要表达的意思。这次写一个补遗,把我认为需要重新解释和着重说明的内容再唠一唠。反正我多说两句,您就可以多理解一些。按此等形式,我感觉下次应该找个小弟当副编辑,专门用于挑错。废话不多说,走起…… 一、为啥我讲的和书上的内容有些不一 ...

戏说领域驱动设计(十三)——核心架构

在做了两章铺垫后本章再续写第九章。我们之前介绍过了好几种架构模式,那么本章只挑一种往死了整,这个架构其实就是在DDD书中所介绍的经典四层的变更版。这里面需要注意一点,四层架构是洋葱架构的一部分,尽管洋葱型已经是微服务架构系统中一种事实上的标准,但我们不会对各类适配器做重点介绍,那些东西一般都是开源的 ...

戏说领域驱动设计(十二)——服务

上一章讲解了软件设计中主要用到的三个设计模型,本节讲解三个服务。等咱们这次都讲完了再最后进行一次归纳,即:系统开发流程中的三模型、软件设计中的三模型和三个服务,我习惯管这个叫3*3*3。看完了您就会知道我为什么常说软件设计这活是朴素的,没那么多弯弯绕,只是因为我们在学习过程中没有做思考和归纳。设计模 ...

戏说领域驱动设计(十一)——纠偏

今儿写这个题目胆子有点大,不过还是得冒险整一篇(我怕您看完了骂我),一是出于经验分享,另外则是为了后面我们讲案例的时候做好铺垫。好的代码需要注意的事项其实挺多的,您真让我一骨脑儿都列出来可能也差点意思,所以遵照我们常态化歪楼的习惯,我是想到哪写到哪儿。 我没事儿的时候就喜欢看别人写的文章,也喜欢看书 ...