DDD学习笔录——简介领域驱动设计的实践与原则
DDD在存在许多DDD模式的同时,也有大量实践和指导原则,这些都是DDD思想体系成功的关键。
1、专注于核心领域
DDD强调的是在核心子域付出最多努力的需要。核心子域是你的产品会成功还是会失败的差异化因素所在。它是产品的独特卖的点,也是构建而非购买产品的原因。
核心领域是将为你的业务提供竞争优势并产生真实价值的产品内容。
至关重要的是,团队要理解核心领域是什么。
2、通过协作进行学习
DDD强调的是开发团队和业务专家之间协作,以生产出解决问题的有用模型的重要性。
没有业务专家的协作和投入,就不能产生大量的知识共享,开发团队就无法获得问题域的深刻见解。同样,通过协作与知识提炼,企业也有机会获得更多与其领域有关的信息。
3、通过探索和实验来创建模型
只有在团队拥有足够时间探究模型并使用模型设计进行实验时才会产生突破。
花费时间进行原型制作和实验,对于你塑造一个更好的设计大有助益。它还能揭示出一个较差的设计但看起来会是什么样子。
4、通信
能够有效描述 构建用于呈现问题域的模型 的能力 是DDD的基础。
所以,UL的创建造是DDD唯一最重要的。
没有公共语言,业务和开发团队之间为解决问题的协作将没有效率。在团队之间的知识提炼环节中,产生的分析和思维模型需要一种公共语言来将其绑定到技术实现上。在理念和问题域中的解之间没有一种有效的通信方式,就不会产生设计突破。
正是UL的协作与构造才使得DDD如此强大。
它使得(业务和开发团队)对问题域的更多理解和更有效的通信成为可能。
5、理解模型的适用性。
所构建的每个模型都能在其子域的上下文中被理解并使用UL进行描述并且不会出现语言歧义。
每个上下文会定义一个语言边界,确保模型能在特定上下文中被理解,避免语言歧义。
因此,具有重叠术语的模型会被分成两个模型,每个都在其专有的上下文中清晰定义。
6、让模型持续发展
DDD仍非灵丹妙药,并且需要持续致力于知识提炼,以生成可以在数年而不仅仅是数月中可维护的软件。
新的业务用例可能会破坏之前有用的模型,或者可能必须进行变更以便让新的或现有的概念更易于理解。
DDD学习笔录——简介领域驱动设计的实践与原则的更多相关文章
- DDD领域驱动设计和实践(转载)
-->目录导航 一. DDD领域驱动设计介绍 1. 什么是领域驱动设计(DDD) 2. 领域驱动设计的特点 3. 如果不使用DDD? 4. 领域驱动设计的分层架构和构成要素 5. 事务脚本和领域 ...
- 如何领域驱动设计?-实践感悟&总结分享
主要是在开发过程中,个人对于领域驱动设计的实践感悟和总结:也是对新进开发人员的培训资料:希望对关注DDD的童鞋有所帮助. 概述 领域驱动不是纯粹的技术问题,领域建模(建立数据表只是一部分)是领域专家( ...
- DDD(Domain Driver Designer) 领域驱动设计简介
领域驱动设计之领域模型 加一个导航,关于如何设计聚合的详细思考,见这篇文章. 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity i ...
- DDD领域驱动设计落地实践(十分钟看完,半小时落地)
一.引子 不知今年吹了什么风,忽然DDD领域驱动设计进入大家视野.该思想源于2003年 Eric Evans编写的"Domain-Driven Design领域驱动设计"简称DDD ...
- 领域驱动设计和实践(转:http://kb.cnblogs.com/page/112298/)
引言 软件系统面向对象的设计思想可谓历史悠久,20世纪70年代的Smalltalk可以说是面向对象语言的经典,直到今天我们依然将这门语言视为面向对象语言的基础.随着编程语言和技术的发展,各种语言特性层 ...
- DDD学习笔录——简介DDD的战略模式如何塑造应用程序的架构
前一篇,简单介绍了DDD战略模式的提炼问题域,这篇简单介绍它如何塑造应用程序的架构. 1.创建一个模型以解决领域问题 为每一个子域构建一个软件模型以处理领域问题并让软件与业务保持一致. 这个模型并非现 ...
- DDD学习笔录——简介DDD的战术模式、问题空间和解空间
DDD的战术模式 DDD的战术模式(也称为模型构造块)是一个帮助创建 用于复杂有界上下文的有效模型的 模式集合. 也就是我们常说的设计模式. 问题空间 问题空间将问题域提炼成更多可管理的子域,是真对于 ...
- DDD 领域驱动设计-三个问题思考实体和值对象(续)
上一篇:DDD 领域驱动设计-三个问题思考实体和值对象 说实话,整理现在这一篇博文的想法,在上一篇发布出来的时候就有了,但到现在才动起笔来,而且写之前又反复读了上一篇博文的内容及评论,然后去收集资料, ...
- 初学者浅谈我对领域驱动设计(DDD)的理解
一.为什么要学习领域驱动设计 如果你已经设计出了优雅而万能的软件架构,如果你只是想做一名高效的编码程序员,如果你负责的软件并不复杂,那你确实不需要学习领域驱动设计. 如果用领域驱动设计带来的收获: 能 ...
随机推荐
- QT QMimeData类
http://blog.csdn.net/xie376450483/article/details/5863810 QMimeData类提为数据提供一个容器,用来记录关于MIME类型数据的信息 QMi ...
- Spring data jpa 使用技巧记录
软件152 尹以操 最近在用Springboot 以及Spring data jpa ,使用jpa可以让我更方便的操作数据库,特开此帖记录使用jpa的一些小技巧. 一.使用spring data j ...
- js的深拷贝特别注意this的深拷贝
原生的,jquery的extend,和angular的copy 我们深拷贝的根本原因是为了不改变原来对象的值. <script type="text/javascript"& ...
- python的常见排序
在python程序中,我们往往自始至终都在与序列(列表.字典.元组)打交道,而最常用的操作就是对序列排序了.在此简单总结一下python中的排序. 基本排序方法 在python中,list对象具有 s ...
- 任务1-1 了解Web基本概念
1.认识网页 从图中可以看到,网页主要由文字.图像和超链接等元素构成.当然,除了这些元素,网页中还可以包含音频.视频及Flash. 为了快速了解网页是如何形成的,接下来查看一下网页的源代码
- 动态加载CSS,JS文件
var Head = document.getElementsByTagName('head')[0],style = document.createElement('style'); //文件全部加 ...
- Linux centos 6.5 搭建 svn服务器
实例:web1 1.安装subversion #yum install subversion #mkdir -p /oop/svn/ //创建svn目录 #chmod -R 777 /oop/svn ...
- LeetCode OJ:Balanced Binary Tree(平衡二叉树)
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
- UVALive 3971 Assemble(二分+贪心)
本题思路不难,但是要快速准确的AC有点儿考验代码功力. 看了大白书上的标程,大有所获. 用map和vector的结合给输入分组,这个数据结构的使用非常精美,恰到好处. #include<iost ...
- mac下安装libpng环境
用go写一个爬虫工具时需要使用一个go的库,而这个库有需要使用libpng库,不然编译就会提示说 png.h找不到等之类的信息,于是想到应该和windows一样需要安装gcc环境,然后让gcc里安装l ...