DDD 理解
DDD提倡充血模型,业务放在类中,而不是服务中,刚开始是比较不清楚的。
突然明白,以前开发桌面程序的时候,不就是这样处理了吗?业务分析和代码实现一一对应。因为桌面程序没有数据库,他就是纯粹的面向对象的实现:类有属性,方法,这些又有有私有,公开之分。
但是基于CURD的Web程序可不是这样了。首先web程序是无状态的,另外它的大部分动作都是读写数据库。这样,都被零零碎碎的session,数据库之类的搞散了,哪里有面向对象的意思呢?
我们进一步封装,把那些数据库之类的暂时不考虑,我们的代码直接反映业务。大概这就是框架力量所在
DDD是设计思想,初学面向对象的人,理解DDD就像,刚开始学面向对象的人一样,存在疑惑,并且疑惑更大。
这主要是没有经历过软件思维训练。
他们可能会想:我原来的写法挺好的啊,为什么会出来这么一种设计思想呢?
那是他们还没遇到业务复杂的情况,或者没有思考过这么改进。
熟练运用面向对象设计之后,在遇到业务分析,自然的会用面向对象的思路架构。DDD也是这样。
值对象,就是一个值。在C#的类中,一个string 属性,就是值对象。而一个地址,里面包含了省市县字段(无Id),相当于只是一个复杂的属性,也是值对象。
DDD是分析业务的方法。就像用面向对象的思想去做项目,和面向过程做项目,最大的差别是视角不同,而不是采用的具体技术。
C语言也可以用面向对象写代码。不会面向对象的人,用C#也写不出来面向对象的程序。
DDD 理解的更多相关文章
- 我也来说说DDD~大话目录
回到占占推荐博客索引 DDD之前没有接触过,但一但有了接触就一发不可收拾,他会带去进入一个全新的世界! DDD不是新技术,而是新思想,新模式,是软件开发领域的一次突破,它更接近于业务,对于业务的改动它 ...
- 软件设计、DDD概念及落地时的一些零碎思考和记录
DDD理解 DDD体现的是对现实的充分尊重. 1.尊重业务现实,领域专家.领域语言等概念 2.尊重团队现实 3.尊重变化 Application 对某一业务线的整体掌控,流程组装,进度管理,存储时机掌 ...
- DDD~大话目录
来自:http://www.cnblogs.com/lori/p/3472789.html DDD~DDD从零起步架构说明 DDD~概念中的DDD DDD~microsoft NLayerApp项目中 ...
- DDD领域驱动设计-概述-Ⅰ
如果我看得更远,那是因为我站在巨人的肩膀上.(If I have seen further it is by standing on ye shoulder of Giants.) ...
- Repository 仓储,你的归宿究竟在哪?(一)-仓储的概念
写在前面 写这篇博文的灵感来自<如何开始DDD(完)>,很感谢young.han兄这几天的坚持,陆陆续续写了几篇有关于领域驱动设计的博文,让园中再次刮了一阵"DDD探讨风&quo ...
- python-1 python基础知识
python第一课代码笔记 hello world [root@heartbeat-data- python]# vim hello1.py #!/usr/bin/env python print ( ...
- Repository 仓储,你的归宿究竟在哪?(上)
Repository 仓储,你的归宿究竟在哪?(上) 写在前面 写这篇博文的灵感来自<如何开始DDD(完)>,很感谢young.han兄这几天的坚持,陆陆续续写了几篇有关于领域驱动设计的博 ...
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 浅谈我对DDD领域驱动设计的理解
从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...
随机推荐
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_05-vuejs研究-vuejs基础-v-text指令
把js移到body 的下面 网速改慢一点 通过模拟网速慢的情况.刷新页面的时候会有闪烁的效果 速度快的情况下也会闪烁 ,只不过是不明显. 2.解决插值表达式闪烁问题,使用v-text v-text可以 ...
- Java 实现 telnet命令 验证主机端口的连通性
Java 实现 telnet命令 验证主机端口的连通性 1.Telnet 命令 Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式.它为用户提供了在本地计 ...
- labelme
项目:https://github.com/wkentaro/labelme?tdsourcetag=s_pcqq_aiomsg 说明:https://www.bilibili.com/video/a ...
- 参照UB单创建DN并过账
*&---------------------------------------------------------------------* *& Form FRM_DN_POST ...
- NuGet修改packages目录/迁移缓存文件夹
如图,以下是NuGet默认配置 打开C:\Program Files (x86)\NuGet\Config目录的Microsoft.VisualStudio.Offline.config可以看见如下配 ...
- 在DELPHI中用TreeView控件从数据库中动态装载信息
1.PInfo表结构ID VARCHAR(50)FullName VARCHAR(50)ParentID VARCHAR(50) 2.Unit文件unit Info; interface uses ...
- linux操作备份
---------------------------------------------------------------------------------------------------- ...
- iOS-Http断点续传
下载LOFTER客户端IOS Http断点续传浅析 http实现断点续传的关键地方就是在httprequest中加入“Range”头. //设置Range头,值:bytes=x-y;x:开始字节,y: ...
- 中国行政区划表,包括34个省、直辖市的所有数据 mysql数据
中国行政区划表,包括34个省.直辖市的所有数据 sql文件地址 https://gitee.com/zwh_9527/ChinaProvince
- unity 读取灰度图生成按高程分层设色地形模型
准备灰度图 1.高程按比例对应hue色相(hsv)生成mesh效果 o.color = float4(hsv2rgb(float3(v.vertex.y/100.0, 0.5, 0.75)), 1.0 ...