DDD领域驱动之干货 (一)

说道DDD不得不说传统的架构与DDD的架构区别。

传统的架构不外乎就是三层,而在这三层里面又不断的细分,始终没有达到想要的效果,那么为什么当时还是采用三层。

当然在DDD没有提出的时候三层是大多数人的选择。

那么当领域驱动被提出来的时候它又能带给我们什么样的好处??

 近期博主看了一下dax.net大佬有关DDD的文章,这里提出自己的一些心得,本着共同学习的精神一起进步。


  我也来说说领域模型

1.为什么叫领域模型?

  首先传统的模型(这里指的只具备getter 和 setter)不包含其他业务逻辑泛指没有具体的功能这种模型我们称为失血(贫血)模式。

  然后才是具备有业务的模型除了getter 和setter 外还有其他的业务逻辑包含在里面,比如说我有一个购物车,购物车内有5件商品,每件商品价值20元,那么在销售订单的时候可以这样写总价=5*20。当然这个例子有点牵强,意会意会就行了。

2.下面我们看看代码是如何设计。

  首先我们有个user、address、saleorder、salelines、Categorization、Category、Product、userrole、ShoppingCart、ShoppingCartItem几个类

    如下图。

           

    其中声明IEntity领域实体接口、IAggregateRoot聚合根集合、AggregateRoot聚合根接口的抽象类。

    

    这里不得不提到聚合个概览。

    引用一下图片:

    

      生成的数据库模型如下图:

    

相关文章: 

  •   WeText项目:一个基于.NET实现的DDD、CQRS与微服务架构的演示案例

  • 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端

原文地址:http://www.cnblogs.com/edna-lzh/p/6869416.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十三章 常用类(Math 类、Arrays 类、System类、Biglnteger 和BigDecimal 类、日期类)

一、Math 类(P481) Math 类包含,用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。 (1)abs:绝对值 (2)pow:求幂 (3)c…

实体类为什么要用包装类而不用基本类型

eg 基本类型默认为有值的 用包装类不传值得是否默认为空 mybatisplus进行操作时更容易进行是否非空的判断

Asp.Net Core轻量级Aop解决方案:AspectCore

什么是AspectCore Project ? AspectCore Project 是适用于Asp.Net Core 平台的轻量级 Aop(Aspect-oriented programming) 解决方案,它更好的遵循Asp.Net Core的模块化开发理念,使用AspectCore可以更容易构建低耦合、易扩展的Web应用程序。AspectCore使…

指定查找区间,查找学生姓名并显示是否修改成功

首先需要创建两个类(面向对象OO的方式实现): 一个是Student,该类主要的代码: String [] names new String [5]; //指定位置查找学生信息public boolean select(int start,int end,String name){boolean flag false;…

去 BAT 面试,总结了这 55 道 MySQL 面试题

转载自 去 BAT 面试,总结了这 55 道 MySQL 面试题 1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 &am…

使用DotNetty编写跨平台网络通信程序

长久以来,.Net开发人员都非常羡慕Java有Netty这样,高效,稳定又易用的网络通信基础框架。终于微软的Azure团队,使用C#实现的Netty的版本发布。不但使用了C#和.Net平台的技术特点,并且保留了Netty原来绝大部分的编程接口。让我们在使…

Mybatisplus查找数据库中表的策略和id自增策略

默认根据类名向数据库中查找对应的表的名字 加注解自己指定

java中实现客户姓名添加和显示

java中使用带参的方法实现对学生姓名的添加和显示: 首先我们创建一个名为Student类的学生类,由于需要添加多个学生信息,那么我们就先在Student类中声明一个存放学生姓名的数组: String [] names new String[10];然后就是添加学生…

C#码农的大数据之路 - 使用C#编写MR作业

写在前面 从Hadoop出现至今,大数据几乎就是Java平台专属一般。虽然Hadoop或Spark也提供了接口可以与其他语言一起使用,但作为基于JVM运行的框架,Java系语言有着天生优势。而且能找到的与大数据框架如Hadoop等使用介绍的文章也都以Java语言作…

.net Core 生产环境 KestrelServer + Shell 实践

1、背景描述 原项目部署在windwos 服务器下的windwos 服务程序。 2、现已经改版为Linux Centos 下的服务程序。 环境说明: 服务器系统:CentOS 7.0 相关工具:Xshel、Xftp 服务器软件软件:.netcore、 1.安装 CentOS 测试环境…

mysql中ifnull函数

当里面的参数为null时使用第二个参数,否则使用第一个参数

NET Core中使用Irony实现自己的查询语言语法解析器

在之前《在ASP.NET Core中使用Apworks快速开发数据服务》一文的评论部分,.NET大神张善友为我提了个建议,可以使用Compile As a Service的Roslyn为语法解析提供支持。在此非常感激友哥给我的建议,也让我了解了一些Roslyn的知识。使用Roslyn的一…

给你一份超详细 Spring Boot 知识清单

转载自 给你一份超详细 Spring Boot 知识清单 在过去两三年的Spring生态圈,最让人兴奋的莫过于Spring Boot框架。或许从命名上就能看出这个框架的设计初衷:快速的启动Spring应用。因而Spring Boot应用本质上就是一个基于Spring框架的应用,…

MySQL里面的in关键字

里面的类型必须一致,不能使用%等通配符(in类似于=)

6月Unity技术路演华东站报名启动!

2017 Unity技术路演华东区现已正式开启报名!2017年3~5月期间,Unity官方技术团队已分别造访华南、西南地区开展为期一天的技术分享,现在华东站(上海、南京、杭州)已正式启动,在这个夏天&#xff…

mysql中的isnull

where条件中的等于号不能比较空值

使用面向对象(OO)的思想,实现循环输入多个会员的信息,根据会员编号,查找会员积分

先来看一下运行结果: 主要知识点是:对象数组的使用编写软件:Myeclipse 10.5JDK版本:1.7完成时间:25分钟 实现思路: 在会员类中(HuiYuan),我们别的事不用干,只需要声明…

应用软件系统程序员的三个立面

这几年工作的重心其实一直没有在代码上,做了很多产品的工作,一直觉得打造一个全面发展的团队一定是我价值所在,所以一直说自己最擅长谈梦想,也确实跟很多人谈了梦想怎么落地、谈了职业规划、孜孜不倦的去聊如何才能踏踏实实的走好…