
领域模型驱动
文章平均质量分 83
QQsilhonette
这个作者很懒,什么都没留下…
展开
-
《实现领域驱动设计》读书笔记
第1章、DDD入门1、什么是领域模型领域模型是关于某个特定业务领域的软件模型。通常,领域模型通过对象模型来实现,这些对象同时包含了数据和行为,并且表达了准确的业务含义。2、战略设计和战术设计战略设计帮助我们理解那些投入是最重要的;哪些既有软件资产是可以重新拿来使用的;哪些人应该被加入团队中。战术设计则帮助我们创建DDD模型中各个部件。...原创 2020-07-01 10:54:08 · 1252 阅读 · 0 评论 -
DDD及CQRS模式的落地实现
1、声明Command BusCommand.javapublic class CommandBus { private final HandlersProvider handlersProvider; public CommandBus(HandlersProvider handlersProvider) { this.handlersProvider...原创 2020-03-14 17:02:15 · 1806 阅读 · 1 评论 -
DDD优秀实践及总结 Part Ⅰ——Domain Primitive
Part Ⅰ.Domain Primitive (DP)原则一:将隐形概念显性化(Make Implicit Concepts Explicit)案例:一个新应用在全国通过 地推业务员 做推广,需要做一个用户注册系统,同时希望在用户注册后能够通过用户电话(先假设仅限座机)的地域(区号)对业务员发奖金。原始代码:public class User { Long userId; String name; String phone; String address;.原创 2021-01-20 16:09:31 · 552 阅读 · 0 评论 -
DDD优秀实践及总结 Part Ⅱ——应用架构
Part Ⅱ. 应用架构好的应用架构目标:独立于框架、独立于UI、独立于底层数据源、独立于外部依赖、可测试。案例分析案例:用户可以通过银行网页转账给另一个账号,支持跨币种转账。同时因为监管和对账需求,需要记录本次转账活动。需求拆解:1)从MySql数据库中找到转出和转入的账户,选择用 MyBatis 的 mapper 实现 DAO;2)从 Yahoo(或其他渠道)提供的汇率服务获取转账的汇率信息(底层是 http 开放接口);3)计算需要转出的金额,确保账户有足够余额,并且没超出原创 2021-01-22 14:59:26 · 319 阅读 · 0 评论 -
DDD优秀实践及总结 Part Ⅳ——领域层设计
案例分析:如何用代码实现一个龙与魔法的游戏世界的(极简)规则?基础配置如下: 玩家(Player)可以是战士(Fighter)、法师(Mage)、龙骑(Dragoon) 怪物(Monster)可以是兽人(Orc)、精灵(Elf)、龙(Dragon),怪物有血量 武器(Weapon)可以是剑(Sword)、法杖(Staff),武器有攻击力 玩家可以装备一个武器,武器攻击可以是物理类型(0),火(1),冰(2)等,武器类型决定伤害类型 攻击规则如下: 兽人对原创 2021-01-23 16:32:40 · 450 阅读 · 0 评论 -
DDD优秀实践及总结 Part Ⅴ——避免写流水账代码
1. 案例简介下单链路,假设我们在做一个checkout接口,需要做各种校验、查询商品信息、调用库存服务扣库存、然后生成订单:原始代码:@RestController@RequestMapping("/")public class CheckoutController { @Resource private ItemService itemService; @Resource private InventoryService invent原创 2021-04-22 11:41:43 · 493 阅读 · 0 评论 -
DDD优秀实践及总结——规范总结
1、尽量使用DP,将隐型概念显性化;2、将数据校验、错误处理、属于该DP的行为放到DP创建中;3、抽象Entity,Entity中包含了数据和行为;4、抽象第三方服务;5、抽象中间件;6、封装业务逻辑,使用DP封装跟Entity无关的无状态计算逻辑,使用Entity封装单对象的有状态行为;7、使用Domain Service封装多对象逻辑;8、Entity和数据模型不需要完全一致,且尽量使用DP;9、Repository接口名称不要使用底层预发,操作Entity对象,不操作底原创 2021-01-23 18:04:36 · 745 阅读 · 0 评论