UI5使用Association和Aggregation描述控件之间的关系。
Aggregation:parent和子控件在lifecycle上存在依赖关系:
When a ManagedObject is destroyed, all aggregated objects are destroyed as well and the object itself is removed from its parent. That is, aggregations won't contain destroyed objects or null/?developer/article/1085641/undefined.
比如UI5的转盘控件Carousel: 一旦转盘被析构,里面显示的page当然也没有继续存在的意义了,需要跟着被析构。
而Association描述了在lifecycle层面的一种soft dependency关系:
Managed associations also form a relationship between objects, but they don't define a lifecycle for the associated objects. They even can 'break' in the sense that an associated object might have been destroyed already although it is still referenced in an association.?
最明显的例子就是控件和其label的关系,比如button和label:技术上来说,可以彼此分开独立存在。
CRM的Genil model存在三种类型的relation,可以在doman CRM_RELATION_KIND里查看:
区别:
只有两种:association或者composition。Composition的含义同CRM里的aggregation,而association的含义同UI5和CRM中的association一致。
只有两种: association或者composition。C4C的这两种relation多了一个限制:relation的目标BO必须和源BO在同一个部署单元Deployment Unit,或者目标BO位于Foundation部署单元内。
Association的语法如下图:
association的multiplicity只支持0,1或者1,1, 如果不显式指定,默认为1,1.
C4C relation的一个特色是,一旦申明了一个子节点之后,系统会默认生成一个对应的composition。
下图第4行代码会自动生成一个0,n的从root节点到Item节点的composition。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。