DDD学习笔记(一)
最近开始筹备一个电商项目. 其实是公司的老本行了. 但今年公司希望在做项目的同时, 沉淀出一套针对电商的基础产品. 这样可以提高新项目的开发效率, 减少重复劳动.
那现如今, DDD(领域驱动设计)应该是比较受推崇的. 所以在这个项目里, 大家决定用DDD来设计系统与抽象业务.
我是十分懵逼的. 只能抓紧时间恶补了.
一开始请教度娘, 看了很多播客, 然而看完之后还是懵逼, 并没有获取到什么有效的知识. 少有的两篇结合能结合实际例子, 上点代码. 然而代码的简易程度也是幼稚的可怜.
这条路看来不行, 那就看书吧. 本想先看大名鼎鼎的<实现领域驱动>, 但鉴于其吓人的厚度, 加上也没从网络上找到电子版资源. 我就先看DDD的开山制作, Eric Evans <领域驱动设计>吧.
因为看的是英文原版, 所以速度较慢.
第一章还没看完, 但我已经感觉有点看不下去了. 因为感觉从开篇到现在,作者强调的东西, 都太空泛了.
比如他强调的'ubiquotus language' 通用语言, 这么高大上的名词, 我真是一点都不懂. 可是看下去才发现, 无非就是说开发人员与业务专家在对于业务理解上很大可能存在不一致, 要消除这种不一致罢了. 我觉得这就属于沟通的艺术的范畴了......
顺便记录几个DDD扯淡专属名词:
1, maps are models : 这句话我很喜欢. map 和model有个共同点, 对现实世界的一种描述与展现.
2,单一职责: OO设计模式老生常谈了.
3,实体Entity: 需要唯一的身份标识
4, 值对象 value_object: 属性相同则认为相同, 只读
5, 领域服务Domain Service: Domain Servcie: 只有方法, 操作,行为, 没有属性和状态.
6, 聚合与聚合根(aggregation &aggregation root)
若干个同类的实体, 值对象 可以聚合, 但这些只能通过聚合根被外界访问.
7, 工厂factory
8, Repository: 数据库交互层
9,CQRS: 查询与命令分离的架构
DDD学习笔记(一)的更多相关文章
- DDD学习笔记二
参考:感谢博主的分享... http://www.cnblogs.com/netfocus/archive/2012/02/12/2347938.html DDD ==> 领域驱动设计(Doma ...
- DDD学习笔记一
由于也是初学DDD,难免有很多不足和认识错误的地方.多数内容来自其他网络资料或者书籍. 参考:http://www.cnblogs.com/Leo_wl/p/4418663.html 希望多多提出宝贵 ...
- DDD学习笔记1——分层架构
新旧架构对比图: DDD中的基础设施层包括数据持久化(ORM数据访问),IoC容器实现,AOP实现(安全,日志记录,缓存等) Repository的接口通常放在领域层,具体实现在基础设施层 旧架构的业 ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
- RAC学习笔记
RAC学习笔记 ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾. 在学习Re ...
- 初学者的python学习笔记1
推荐一段时间闲的蛋疼,总觉得再堕落下去不太好,便捡起了之前一直想学而没有学的python,以此记录一下学习笔记,同时亦是督促和复习. 学习51cto上的<2016最新Python开发基础课程-2 ...
- js再学习笔记
#js再学习笔记 ##基本 1.js严格区分大小写 2.js末尾的分号可加,也可不加 3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var ...
- MVC_学习笔记_2_Authorize
MVC5_学习笔记_2_Authorize/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) *//* Author: Nico ...
- Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
随机推荐
- session喜欢丢值且占内存,Cookis不安全,用什么可以代替呢?
localstorage sessionstorage 在线资料 webdb 这些都是基于HTML5的新特性! 此外还可以使用服务器文件.DB等.
- Asp.NetCore安全验证之JWT
本文只是介绍了下基于AspNetCore自带的System.IdentityModel.Tokens.Jwt.dll工具在项目中Token的应用. 我这里谈到的很浅显就两点: 一,超时时间 二,数据的 ...
- RoadFlow ASP.NET Core工作流引擎IIS部署
RoadFlow最新版本采用ASP.NET CORE2.1开发,部署步骤和.NET CORE部署一样,具体可参数ASP.NET CORE的部署方式. 1. 获取代码 首先从RoadFlow官网下载最新 ...
- 记开发个人图书收藏清单小程序开发(六)Web开发
Web页面开发暂时是没有问题了,现在开始接上Ptager.BL的DB部分. 首先需要初始化用户和书房信息.因为还没有给其他多余的设计,所以暂时只有个人昵称和书房名称. 添加 Init Razor Pa ...
- MVC中用jQuery加BootStrap实现动态增加删除文本输入框!
http://www.freejs.net/article_biaodan_278.html 这是在网上找到方法,我修改了一下实合我的项目,发博只为收藏记录并加深记忆. 修改后效果如下 @model ...
- Schema validation found non-datatype errors
Private Sub UpdateClaim(ByVal Status As String, ByVal Request As String) '======================' Im ...
- CentOS6.3上部署Ceph
一.背景知识 搭建ceph的机器分为两种:client和非client(mds.monitor.osd). 配置时client只需要在内核编译时选上ceph就行,而其它三种则还需要编译ceph用户态源 ...
- sql server中的 trimtrailingblanks
使用sp_help 查出 发现有个这个属性, 如何修改呢? SET ANSI_PADDING ONAlter Table Sys_users_History Alter column PveSit ...
- Java中Arrays工具类
以下是实现六种功能的方法: 1.比较两个数组值是否相等: 结果为true.false.(布尔型不能比较) int []a={10,20,30}; int []b={10,20,30}; int []c ...
- AngularJS入门讲解3:$http服务和路由讲解
上一课的例子中,我们的模型数据是硬编码的,也就是说,我们的数据不是从服务器请求回来的. 这里,我们先讲解,如何从服务器获取数据: function PhoneListCtrl($scope, $htt ...