DDD与数据事务脚本

本文探讨了DDD(领域驱动设计)与数据事务脚本的异同,通过一个“消息发送系统”的例子展示了两种设计方法。作者指出,数据事务脚本直接处理数据,而DDD强调领域对象的行为。在DDD中,对象应具有相关行为,而不仅仅是数据。文章提醒开发者在设计对象时要考虑行为与属性的内聚性,并讨论了DDD与RESTful API的不匹配。最后,作者强调了DDD在软件开发流程中的重要性,但同时也指出其与RESTful的不完全契合。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

DDD与数据事务脚本

扯淡

相信点进来看这篇文章的同学,大部分是因为标题里面的“DDD”所吸引!DDD并不是一个新技术,如果你百度一下它的历史就会知道,实际上它诞生于2004年, 到现在已经18年,完全是个“古董”,软件开发技术日新月异,DDD确显得很独特,一直不温不火,也未淘汰。有些人为了使用DDD“苦思冥想”、有些人对它保持敬畏,觉得是一种高端的技术,当然也有人觉得这玩意垃圾根本没用。废话不多说. 下面我尝试使用一个最基本的业务场景来讨论下ddd和事务脚本。

假如我们的现在需要做这么一个系统,名字叫做“消息发送系统”。 系统里面存在很多用户,而我们需要做的,就是给指定的用户发送消息

  1. 用户能在收件箱中看到收到的消息,消息有已读,未读状态,消息内容不能为空。
  2. 通过发送用户id、消息内容,就可以发送到用户。注意这里并没有发件人的概念。

数据事务脚本

需求很简单,现在我们开始设计这个功能。相信你只需要学习过一些基本的编程技术,你第一直觉一定会整理出下面这个数据结构


    message{
        id , //消息id
        userId ,//接受用户id
        content ,//消息内容
        state ,//消息状态已读,未读
        ...
    }


当设计出这个数据结构的时候,我们心里面其实认为这个系统的“核心”就完成了, 这TM是真简单啊! 为什么会是这样?我们都知道,计算机最核心的组件是cpu,而cpu就是用来计算处理用户输入的数据,并将结果反馈给用户。而软件运行在计算机上,所能提供的功能实际上也是这样处理数据。当然了,计算机还有磁盘,磁盘可以存储用户输入cpu的数据,也能存储cpu处理完后的数据!按这个逻辑,一个软件(系统)实际上就是在将特定业务场景下的数据输入计算机,计算机处理完后存储这些数据。软件只需要准确的记录下计算过程中产生的所有数据,并正确的存储算据即可实现对应的功能。

软件的不同功能,只是以合适的方式创建、修改、展示数据。上面的message结构,准确的找出了我们“消息发送系统”里面产生的数据。 发送消息,只不过就是新增了这样一个消息数据, 而用户看消息,只是找到所有message中userid为自己的id的消息,显示出来就可以了。这个“消息发送系统”非常简单,其实大的系统也是一样,大系统由很多这样小的系统组成,本质确是一样的。

我们已经找出这个系统会产生的数据结构,当然还需要保存起来,假设将它存入数据库里面(如果你愿意,你也可以存到文件里,或者干脆只放到内存里),那么我们在数据库里面就新建一张message的表,字段就是id,userId,content,state。假设现在有个页面,您可以在这个页面中输入id,userid,content,state,点击提交按钮,软件取到这些值,就写入数据库。伪代码大概是这样:

    var id = input('id');
    var userId = input('userId');
    var content = input('content');
    if(userId == ""){
        err "userid不能为空"
    }
    if(content == ''){
        err "内容不能为空";
    }

    //发送消息
    state = input('state');
    database.exeSql("insert into message values(id,userid,content,state)");

    //查看消息
    messages = database.exeSql("select * fro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值