编程知识 购物 网址 新闻 笑话 | 软件 日历 阅读 图书馆 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
   -> 领域驱动设计 -> ABP文档翻译 -> 正文阅读

[领域驱动设计]ABP文档翻译

  本人是ABP初学者,在看英文文档和@tkb至简 的ABP框架理论研究总结(典藏版)时,发现大神@tkb至简中少了对Value Objects的翻译,看文档是新的,大神没时间把,小弟给补充上。  
介绍 值对象基类 最佳实践 介绍
  “用于描述领域的某个方面而本身没有概念标识的对象称为 a VALUE OBJECT”(Eric Evans)
  对于实体是相反的,实体有它们的表示(id),一个值对象没有标识。如果两个实体的标识不相同,即使它们所有的其他实体属性是一样的,它们也被称为不同的对象/实体。想象一下,两个不同的人拥有相同的名字、姓氏和年龄,但是他们拥有不同的身份证号,他们就是不同的人。但是,对于一个地址(它是一个经典的值对象)类,如果两个地址是相同的国家、城市、街道号码...等等,也被称为同样的地址。
  在领域驱动模型中(DDD),值对象是领域对象的另一种类型,它能包含业务逻辑,它是领域必不可少的一部分。
值对象基类
  在ABP中,可以很简单的就创建值对象类型。ABP有一个ValueObject<T>基类,继承它就可以了。示例,地址 值对象 类型:

    public class Address : ValueObject<Address>
    {
        public Guid CityId { get; private set; } //引用城市实体.

        public string Street { get; private set; }

        public int Number { get; private set; }

        public Address(Guid cityId, string street, int number)
        {
            CityId = cityId;
            Street = street;
            Number = number;
        }
    }

  假设两个值对象所有的属性都是一致的,值对象基类的重写equality操作(和其他相关操作和方法)来比较两个值对象。 那么,所有这些测试都通过:

var address1 = new Address(new Guid("21C67A65-ED5A-4512-AA29-66308FAAB5AF"), "Baris Manco Street", 42);
var address2 = new Address(new Guid("21C67A65-ED5A-4512-AA29-66308FAAB5AF"), "Baris Manco Street", 42);

Assert.Equal(address1, address2);
Assert.Equal(address1.GetHashCode(), address2.GetHashCode());
Assert.True(address1 == address2);
Assert.False(address1 != address2);

   即使它们在内存中,是不同的对象。在我们的领域中也是相同的。
最佳实践
  在这里有一些对于值对象最佳的实践
如果没有一个充分的理由设计值对象是易变的话,那最好设计一个值对象是不可变的(像地址这样的)。 从整体概念上讲,属性组成一个值对象。例如,在一个人类实体属性中,不应该独立城市ID、街道和编号。同时,它使人类实体更加简单。
  领域驱动设计 最新文章
领域驱动设计的基础知识总结
海西 · 云交付 DevOps实践落地方案
多服务器终端交互利器
《静儿的服务治理私房菜》服务治理和架构
服务治理概述
美团.点评服务治理框架
ASP.NET Zero
1.领域驱动简介.2.领域.子域.限界上下文.3.
东麓庄园系统开发
东麓庄园系统开发
上一篇文章      下一篇文章      查看所有文章
加:2016-12-28 23:04:09  更:2017-05-16 03:47:33 
 
360图书馆 软件开发资料 购物精选 新闻资讯 Chinese Culture 三丰软件 开发 中国文化 阅读网 日历 万年历 2019年12日历
2019-12-8 8:46:25
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程知识