当前栏目:彩票赔率9.99网址

甄别实体与值对象专门主要,精确与否会直接影响聚相符的设计。

日前,《黑神话:悟空》战斗策划离职引起了不小的风波,引得游戏科学的联合创始人杨奇在微博上进行了一次回复。不过由于最近部分媒体和自媒体对该事件的过度报道,为此杨奇先生又专门发了一条微博来回应此事件。

《奇异人生》系列的新作《奇异人生:本色》发布了最新宣传片,介绍了游戏主角所在的Haven Springs小镇。玩家可以在镇子里进行游览、游玩小游戏等活动,也可以与NPC交流并逐步发现隐藏的剧情。一起来看看吧!

开发商Heart Machine的冒险游戏《太阳灰国》放出了新的发售日期预告,游戏将于2021年10月26日登陆PS4/PS5/EPIC商城。

拳头公司曾在2018年就因性骚扰和性别歧视遭到起诉,最后支付了1000万美元的赔偿费用进行了和解。后来拳头又试图将案件转移至私人仲裁听证会,最后因员工以罢工相要挟才放弃强制仲裁。

今日,万代南梦宫在官方油管频道上发布了《破晓传说》中角色奇莎兰的个人预告,简单展示了一小部分游戏过场与角色实机游玩。下面为大家带来预告视频。

聚相符是边界

在DDD中,聚相符是实体与值对象的边界。一个聚相符对外代外了一个完善的周围概念,遵命面向对象设计的基本原则,聚相符内部往往由众个细微的高内聚周围概念构成。聚相符内部的周围模型形成了一棵树,树的根必须是实体,能够称之为是聚相符根(Aggregate Root),自然,也能够称之为根实体(Root Entity),它是聚相符的唯一入口或出口。例如订单聚相符定义了Order根实体,它就是订单聚相符的唯一代言人。

在一个限界上下文的一切周围模型(实体和值对象)中,遵命有关的强弱与概念的完善性,将其划分为众个聚相符,就相通草原部落由一个个蒙古包构成了疏松的聚居社群清淡。

考虑到值对象与实体的迥异,伪如必要管理它们的生命周期,则值对象不能够脱离聚相符的边界单独存在。这就意味着,当吾们要识别周围模型的聚相符时,实体与值对象之间的强弱有关并不会影响到对聚相符边界的界定。只要实体与值对象之间存在有关,不论有关强弱,该值对象都必须与存在有关的实体放在联相符个聚相符。如果一个值对象与众个实体之间存在有关,要么表明众个实体都属于一个聚相符;要么意味着该值对象必要复制为众份,放到分别的聚相符中,如下图所示:

如此一来,对于聚相符边界的识别,就变成了对实体有关强弱的判定。只要吾们精确地甄别了实体与值对象,在识别聚相符时彩票赔率9.99网址,就能够不再考虑值对象,如此就能降矮识别的难度。

上下文的影响

固然吾们清新实体与值对象之间的内心迥异在于是否具备唯一的身份标识(identity),然而很众时候,这一迥异照样显得貌同实异。更何况,实体与值对象的定义并非绝对,在分别的上下文,联相符个周围概念也能够定义为分别的设计类型。例如下图所示的钞票一枚:

在购买上下文,营业两边只关注钞票的面值与货币类型,只要值相称,即可认为是联相符个对象,因而需定义为值对象;在印钞上下文,每张钞票都具有一个唯一的标识,即使同为100元的人民币,只要ID分别,也会认为是分别的对象,故而定义为实体。因此,要精确地甄别实体与值对象,必要结相符详细的上下文。

识别的特征

即便如此,照样匮乏相对客不益看的判定标准。为此,吾总结了如下几个特征。

相称性

甄别实体与值对象,能够最先从相称性进走判定。只要一个周围模型对象的属性值相称,就认为是联相符个对象,答优先考虑建模为值对象;否则,必要为周围模型对象定义唯一标识,并建模为实体。

仔细:在进走相称性判准时,不及将行为唯一标识的ID视为周围模型的属性。

例如地址周围概念,只要其属性值国家、省份、城市、街道与邮政编码相称,就能够认为是联相符个地址,答将Address类定义为值对象。对于行家耳熟能详的订单周围概念,隐微必要为其分配一个唯一的订单编号,由于理论上能够存在除订单编号外其他属性都相通的两个分别订单,答将Order定义为实体。

然而,在对相称性进走判准时,能够展现ID与属性存在一栽隐含的对答有关。例如,出版走业中行为正途出版物的图书,具有唯一的ISBN号,它相当于是图书周围概念的ID,以是Book答定义为实体。可在对Book相称性进走判准时,也能够不经历ISBN进走相称性判定,基本上,只要书名、作者(译者)、出版社、价格、出版日期、版次、页数、字数等属性值相通,也能够认为是联相符本书,那是否意味着能够将Book定义为值对象呢?

隐微,在进走相称性判准时,考虑的属性越众,就会展现众个组相符的属性形成一栽“暗藏”的唯一标识特征,有一些表现营业规则的ID,自己就是根据属性值来定义的。例如,航班的唯一标识就能够根据承运公司二字码、航班号、首降机场三字码与执飞日期来决定。经历唯一标识固然能够决定是否联相符个航班,根据映射的众个属性值,也能够判定相称性。这会让人在甄别实体与值对象时,显得摇曳不定。例如,腾讯会议的会议号是Meeting的身份标识,在比较会议的相称性时,伪如吾们考虑了除会议号之外的其他属性,如会议名称、会议类型、最先时间、终结时间、创建人、创建时间等属性,纷歧样能够确定会议的相称性吗?

因此,除了判定相称性,还需考虑不变性。

不变性

Eric Evans提出将值对象定义为不变的类,实则是由于根据值判等的值对象就答该具有不变性。仍以购买上下文的钞票为例,50元+50元=100元,这100元与正本的50元是另一张分别的钞票:

逆之,一个对象除了ID,其余属性值都能够修改,不必要创建一个新的对象,就能够认为该周围对象是可变的,答考虑定义为实体。如前所述的Meeting对象,只要meetingId值不变,如会议名称、会议类型、最先时间、终结时间云云的属性值即使发生了天翻地覆的转折,吾们也认为它是联相符个会议。隐微,答将Meeting定义为实体。

再考虑一个典型的订单聚相符:

为什么吾们要将订单聚相符中的OrderItem定义为实体?如果不考虑ID属性,只要orderId、product与quantity值相通,十足能够认为是联相符个订单项。然则,订单项的quantity值是能够更改的,更改了数目的订单项也不会认为是分别的订单项。订单项的可变性决定了它答该定义为实体。

为何要将OrderItem的Product属性定义为值对象呢?要清新,该Product类型还定义了productId属性,既然具有身份标识,不该该定义为实体吗?由于在订单上下文中,商品的productId来自于商品上下文的商品ID,在订单聚相符中,能够将productId视为Product类的属性值。只要productId、name和price值相通,就能够认为是联相符个商品,且它们的值是不变的。这正是将Product定义为值对象的因为所在。

自力性

即使考虑了相称性和不变性,仍有一栽破例情形,那就是考虑自力性特征。值对象行为实体的属性必定附属于实体,不及单独存在;如果一个周围对象既已足了相称性,又已足了不变性,可定义为值对象;可是,如果它单独存在,且必要管理其生命周期,就必要将云云的类“升级”为实体。

考虑考勤上下文的伪期周围概念。由于中国阴历伪期的原由,每年都必要配置新的伪期。伪期概念对答的Holiday类定义为:

隐微,该类的一切属性值相称,即可认为是联相符个伪期,一旦修改了伪期的值,也能够认为是分别的伪期,即Holiday类同时已足相称性和不变性,答定义为值对象。可是,在考勤上下文的周围模型中,Holiday类是十足自力的,不倚赖于其他任何实体,而它也必要管理生命周期。这时,就答遵命自力性特征,将其“升级”为实体。

优先级

以上三个特征并无主要性排列,需综相符考虑。如果照样无法判定,就遵命优先级原则:优先将周围概念建模为值对象。

【编辑选举】彩票赔率9.99网址

人脸识别时必定要穿衣服引热议,行家称不消太甚不安 钟南山人造智能大会上说话 谈及AI新冠肺热影像识别等技术 美国再发实体清单禁令!格灵深瞳、苏州科达、华澜微电子等23家中国实体在列 SQL乞求走为识别新功能上线,协助解决变态SQL检测之大海捞针题目 科学家开发新体系 行使可旋转3D面部照片更实在地识别罪人
浏览:

友情链接

Powered by 彩票赔率9.99网址-彩票网站赔率9.99 @2018 RSS地图 HTML地图