日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABP文档翻译--值对象

發布時間:2024/7/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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、街道和編號。同時,它使人類實體更加簡單。

?

轉載于:https://www.cnblogs.com/lizejia/p/6230396.html

總結

以上是生活随笔為你收集整理的ABP文档翻译--值对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。