专栏首页java技术大本营来,一起造作吧!拥抱DDD!

来,一起造作吧!拥抱DDD!

先聊聊曾经

好像从从业开始之后,每每向前辈请教代码怎么写,前辈总是云淡风清的说一句,先建库建表,然后对着建的表写实体类,然后用表和实体类写DAO层,然后跟着写service层,最后写controller。这样把增删改查四大方法写出来就可以了!然后页面(View)看看需要做什么操作或者查询什么数据,对应着controller里面写方法,然后参数加工一个传到service层,然后在service层里面调别的service,dao来操作数据库,完成业务逻辑。这也就是大家常说的,工作就是ctrl+c , ctrl+v 天天增删改查

开始造作

这段时间小刀在工作时偶然看到了领域模型驱动(圈起来,要考的重点),感觉为小刀的思考和学习思路提供了一个新选择。和上一段说的分层不太一样,新选择指引我们从业务入手,先提炼出一些关键概念点,然后划分出基础支持和业务数据。

如网站常用的登录,最简单的设计就是一张user表,里面存账号密码和手机号,这样手机号/账号密码登录都能支持。要是哪天来个微信登录呢?这怎么存?加个字段?再来个QQ登录?再来个微博登录?

程序员界有名话说:没有什么问题是加张中间表解决不了的,如果有,那就加两张,对上面的用户设计,有的小伙伴已经给出了较好的答案,对,加张中间表,账号表account ,一个user(用户)对应多个account(账号

换个思路再想想

前段时间设计用户中心时,小刀也确确实实是按上面的思路走的,但是走着走着就感觉还是很模糊,然后小刀就尝试换个思路想,如上所述:

关键概念点

最开始在设计时,一想都在想着,遇到业务场景时要对哪个做什么操作(此处要提一下我前任领导常说的一句说,不要脱离业务讨论技术方案)但是现在我们要往上走一步,不要说对表执行什么什么操作了,要说对表代表的实体做什么操作。如:有新客注册时,我们要先在 账号中添加一条账号,然后提取基本信息添加到用户中。这样我们就得到了两个关键概念,以后的讨论和描述都围绕着这两个点进行。

有的小伙伴估计要说了,这和用表讨论没什么区别啊,对,是没什么区别,但去掉表,就是一个新的思路。

划分基础数据和业务数据

就以上说的两个关键点而言,以前没有这个划分概念的时候,觉得这不都是数据库表嘛,都属于用户这一块的。小刀和大家一起来按下面这两种思考方式走一下:

一, 用户是基础数据,账号是业务数据

用户这些数据,换个系统也能用,但是账号就不一样了,上面可能有余额,积分这些和业务强相关的东东,换个地方就不好使了

二,用户和账号都是基础数据

用户是用户的基本信息,账号只代码着用这里面的手机号/用户名密码能登录这个系统,真正的业务数据要单独建个表和账号关联,如管理员表,如普通用户表

最后说两句

孙子兵法有言:夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也。在写代码之前,如果不思考好这些东西,就会发现越写bug越多,所以小伙伴们可以尝试从现在自己负责的模块入手,思考下如何提炼关键点,如何划分基础数据和业务数据。

下期预告:拥抱DDD,新的代码组合方式

本文分享自微信公众号 - java技术大本营(java-ideashare),作者:微笑的小小刀

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • tomcat学习|源码学习方法及tomcat处理Web请求

    上一波,我们一起新建了web应用,然后把war包丢到tomcat源码中的webapps 目录,然后通过源码启动的方式成功debug运行了我们web应用,并且在浏...

    微笑的小小刀
  • java练习本(2019-07-07)

    虚拟机栈VM Stacks(栈帧Frame)、本地方法栈(Native Method Stacks)、方法区(Mehthod Area(Non-Heap))、P...

    微笑的小小刀
  • tomcat学习|tomat中的server.xml的学习

    小刀博客: https://www.lixiang.red 小刀公众号: 程序员学习大本营

    微笑的小小刀
  • 浅谈App测试~带音频

    (1)账号密码登录注册 注册过程: a.app收集账号和密码 b.app请求服务端接口提交账号 c.服务器端进行数据格式和账号唯一性验证 d.记录注册数据并返回...

    Criss@陈磊
  • 业界 | 跨职能合作,优秀的数据产品如何三步炼成

    结合了数据与机器学习的产品可成为解决用户需求的利器。它们能够创造一条可以帮你避免激烈竞争的“数据护城河”。

    大数据文摘
  • 学习R语言,一篇文章让你从懵圈到入门

    在实际工作中,每个数据科学项目各不相同,但基本都遵循一定的通用流程。具体如下: 数据科学工作流程 数据导入 数据整理 反复理解数据 数据可视化 数据转换 ...

    小莹莹
  • 学习R语言,一篇文章让你从懵圈到入门

    在实际工作中,每个数据科学项目各不相同,但基本都遵循一定的通用流程。具体如下: ? 数据科学工作流程: 1.数据导入 2.数据整理 3.反复理解数据 数据可视...

    CDA数据分析师
  • 用《复联3》的豆瓣评分教会你正确使用条形图、饼图、漏斗模型

    导读: 每天跟数据打交道,或许你已经习惯了用数据说话。怎样能让人更懂你的数据?图表是展现数据的有效方式,几种最常见的图表你都会用了吗?基于图表和数据的常见分析方...

    华章科技
  • 拼多多面试题:如何用 Redis 统计独立用户访问量?

    当然,拼多多加班也是出名的,一周上6天班是常态,每天工作时间基本都是超过12个小时,也是相当辛苦的。

    Java技术栈
  • 拼多多面试:如何用 Redis 统计独立用户访问量?

    众所周至,拼多多的待遇也是高的可怕,在挖人方面也是不遗余力,对于一些工作3年的开发,稍微优秀一点的,都给到30K的Offer,当然,拼多多加班也是出名的,一周上...

    搜云库技术团队

扫码关注云+社区

领取腾讯云代金券