[领域]当Party就是PartyRole会这样

本文探讨了在领域驱动设计中PartyRole和Party的区别,解释了它们在不同业务场景下的应用,以及如何根据业务需求决定是否将两者分离。文章通过举例说明了 Party 和 PartyRole 的关系,并讨论了在数据库实现中的多种策略,强调了模型应对变化的弹性和由此带来的实现挑战。此外,还提及了用户、员工、供应商等角色在系统设计中的考虑,指出User、Party、PartyRole和PartyRelation之间的差异和联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是partech的blog的内容,我想我对这个问题应该算是小有研究,拿出来供大家参考。

首先要说明的是PartyRole和Party到底都是什么?PartyRole,简而言之,就是角色(可能是人的角色,也可能是物的角色。人的角色如:父亲,儿子,丈夫,员工,物的角色如:抵押品,车辆,固定资产。。。)。 在早期的OOAD中(特别是使用了传统的名词概念法),这些都是显而易见的领域对象。而且,在大多数人的印象中,这些确实也被做为领域类(和实体类)存在的。

这样做的隐含的问题就是:软件描述的环境跟实际的业务环境不符,为什么这么说呢:举一共简单的例子:我是我老爹的儿子,我是我儿子的老爹,我是我老婆的老公,我是cheeloo soft公司的员工,在同一时段,我(这个人)居然拥有了4个角色,这也就意味着,我要在系统中填写4遍个人信息(或者,让系统管理员替我填写,累死他,哈哈。).

于是,精通OO的人们,进行了细粒度的划分,抽取出来一共存储特定人员信息的人员实体,该实体与人员的职务或角色无关,比这个被抽出来的“人员 Person”,更抽象的就是Party。Party是(person 和organization的深层抽象).


信息的冗余带来的坏处,我就不多说了,反正在过去,上的都是部门级的系统(如财务/销售系统),而现在的趋势是上企业级的系统(如协同),这就给我们的软件提出要求:集成和整合冗余数据。

我经历过的几个系统,都提出过类似的要求:比方说YCV3系统,提出:国家要求政企分开,专卖局和商业销售公司是一套班子,两套组织机构,有不同的权力范围和汇报关系;比方说:顺德某银行,要求其系统:任意找出两个节点,系统计算出它们之间的关系(如,张三是本银行的雇员,并且在某年某月某日,替自己的亲戚做了个房产抵押担保).

因此,Party和Party Role,在领域概念中,是两个不同的实体。是不是要把这两个领域类区分出来,取决于你的业务环境,比方说,你要开发的是一个企业级系统,有着明显的业务意图,把Party从Role中分离出来,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值