学习
实践
活动
专区
工具
TVP
写文章

设计模式-组合实体模式

组合实体模式是什么? 组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。 当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的。以下是组合实体 bean 的参与者。 角色: 组合实体(Composite Entity) - 它是主要的实体 bean。它可以是粗粒的,或者可以包含一个粗粒度对象,用于持续生命周期。 优点: 易拓展:组合实体可以自由增加,遵循了开闭原则; 缺点: 破坏了单一职责,又获取组合体信息又打印组合体破坏了单一职责; 组合实体模式可以干嘛? 通过组合实体模式,通过一个组合实体的实客户端来控制原有的实体,进行创建和数据替换,起到一个统一管理。 个人理解: 就类似于收快递,楼下房管给你统一收了,统一放了。 组合实体模式类图 ?

33620

如何运用领域驱动设计 - 实体

概述 本文将介绍领域驱动设计(DDD)战术模式中另一个常见且非常重要的概念 - 实体。相对战术模式中其他的一些概念(例如 值对象、领域服务等)来说,实体应该比较容易让人理解和运用。 但是我们如何去发现所在领域中的实体呢?如何保证建立的实体是富含行为的?实体运用时又有那些注意的细节呢? 何为实体 直接来看看原著《领域驱动设计:软件核心复杂性应对之道》 中对实体的解释: 实体(Entity,又称为Reference Object) 很多对象不是通过他们的属性定义的,而是通过一连串的连续事件和标识定义的 似曾相识 来想一下,我们在以传统的设计思路和开发过程中,我们会在什么情况下为一个对象赋予一个ID呢?给它赋予这个ID的作用呢? 这显然不符合我们设计的初衷。因此我们可以将所有属性的set私有化。所以,一定要注意,我们在考虑实体的时候,一定要知道“实体是高度内聚和自治的”(敲重点!!!!!)。

34120
  • 广告
    关闭

    9块9,云智绘帮您轻松搞定营销设计!

    10万模板,1亿优质图库,正版商用授权,涵盖电商、banner海报、新媒体配图、教育培训海报、H5等各种场景

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    设计3——电商设计之挖掘实体的办法

    也许你会觉得这些东西有一点简单可笑,设计的事情你觉得不屑于去做,但这些东西确实能够帮助你清晰的认识系统,去挖掘系统的功能,最后落地到系统设计。 ? ? ? ? ? ? 靠用例图当然不能完成系统的设计,不过我们会在设计的工程中引入更多的图,不同的图可以干不同的事情,慢慢的就会知道了。 今天,我们通过,过去两天的用例来分析分析,我们的系统需要用到哪些实体。我们先把系统需要用到的实体提炼出来,在今后的设计中继续深入分析,自顶向下,逐步迭代,采用RUP的思路进行。 ? RUP是什么? 3)软件开发是以架构设计(Architectural Design)为中心的。 看到了吧,迭代和用例驱动来进行软件的开发。你说用例重要不重要?我们今天就分析用例,找出主要实体实体间的关系就好了。 类图主要用在面向对象软件开发的分析和设计阶段,描述系统的静态结构。类图图示了所构建系统的所有实体实体的内部结构以及实体之间的关系。

    23120

    DDD领域驱动设计实战(三)- 理解实体

    不应该通过对象的状态形式和历史来区分不同的实体对象……对于什么是相同的东西,模型应该给出定义。 那么如何正确地使用和设计实体? 3 唯一标识 在实体设计早期,关注能体现实体身份唯一性的主要属性和行为及如何查询实体,忽略次要的属性和行为。 设计实体时,首先考虑实体的本质特征,特别是实体的唯一标识和对实体的查找,而不是一开始便关注实体的属性和行为。只有在对实体的本质特征有用的情况下,才加入相应的属性和行为[Evans, p.93]。 4 各种状态的实体 DDD的不同设计过程,实体的形态也不同。 4.1 业务形态 在战略设计时,实体是领域模型的一个重要对象。领域模型中的实体是多个属性、操作或行为的载体。 》 实体和值对象:从领域模型的基础单元看系统设计

    73732

    领域驱动设计实体、值对象、领域服务

    建立领域模型的第一步就是需要识别出实体、值对象与领域服务。 一.实体 1.实体是领域中需要唯一标识的领域概念。通常在业务中,需要唯一标识与区分的对象并需要持续对它进行跟踪,这样的对象我们认为是实体。 2.如果两个实体所有状态都一样,但如果标识不一样,就是两个不同实体。比如订单对象就应该是实体,就算两个订单的订单日期、订单总额等信息都一样,只要标识不一样,比如订单号,我们就认为它们是不同的实体。 3.实体只保留必要的属性与行为。 比如一个客户实体应该保留客户的基本信息,但像国家、省、城市、街道等信息联合表示一个完整的概念,这种完整的概念应该迁移到其他实体或值对象上,这样有助于客户实体的理解和可维护性,并明确了清晰的职责。 比如借书领域中,账户、书与借书信息分别是三个实体(实际上分别是三个聚合的聚合根,聚合与聚合根后面文章再详细描述),借书的这个行为归于其中任何一个实体都不合适,虽然有一种认为是在账户实体上实现借书行为,将书作为参数传递给账户

    2.3K90

    Rafy 领域实体框架 - 领域模型设计器(建模工具)设计方案

    去年4月,我们为 Rafy 框架添加了领域模型设计器组件。时隔一年,谨以本文,简要说明该领域模型设计器的设计思想。 设计目标 Rafy 实体框架中以领域驱动设计作为指导思想。 首先,这样使得可以在 Visual Studio 中就能直接进行领域建模,并能根据模型来生成实体代码;其次,在使用 CodeFirst 的场景下,也能在 Visual Studio 中直接根据当前的实体类代码来生成相应的领域模型设计图 规划整个设计器的所需要的组件: 并画出组件间的依赖图: 简要说明各组件的用途: DDD Object Model:位于最底层的 DDD 对象模型,用于描述领域建模中的实体实体间的关系。 以 XML 文档的形式定义了模型的显示、实体类型、实体间的关系结构。 WPF Controls:WPF 中可用于显示模型的控件集。例如:实体块、连接线等。 Rafy Entity Meta:当下 Rafy 框架中的实体运行时元数据包。 Rafy Plugin:一个可运行在 Rafy 应用程序中的插件。这个插件用于查看运行时实体的领域模型关系图。

    1.5K100

    结构建模设计——Solidworks软件之草图几何关系绘制与草图编辑功能总结(裁剪实体、转换实体引用、等距实体

    目录 0 引言 1 草图几何关系 2 草图编辑 2.1 裁剪实体 2.2 转换实体引用 2.3 等距实体 3 总结 0 引言         上一博文练习了使用草图工具绘制常见如矩形、圆、槽、圆弧、倒角等 ,都是单独的个体,那么,本次博文学习下草图几何关系的绘制,包括:重合、中点、平行、相等、共线、相切、对称,草图编辑功能包括:裁剪实体、转换实体引用、等距实体。 、转换实体引用、等距实体,功能按钮位置在工具栏中。 T型,同样使用转换实体引用功能操作如下: 2.3 等距实体 在Solidworks,不仅实体的边线可以等距,草图的元素也可以等距 【圆柱体上平面使用等距实体功能】: 【草图中一条直线使用等距实体功能 当然,这些都可以看做模块子功能,真正画一个草图设计时就需要用到这些功能了,下一节博文中会做一个实战练习,一起把草图绘制学习的这些功能串联起来。

    47630

    DDD领域驱动设计实战(三)-深入理解实体

    DDD领域驱动设计实战(03)-深入理解实体 1 前言 实体是领域模型中的领域对象。 官方解释:实体是指描述了领域中唯一的且可持续变化的抽象模型。 不应通过对象的状态形式和历史,来区分不同实体。对于什么是相同的东西,模型应该给出定义。 那么如何正确使用和设计实体呢? 3 唯一标识 实体设计早期: 关注能体现实体身份唯一性的主要属性和行为及如何查询实体 忽略次要的属性和行为 设计实体时,首先考虑实体的本质特征: 实体的唯一标识 对实体的查找 而不要一开始就关注实体的属性和行为 参见 DDD领域驱动设计实战 - 创建实体身份标识的常用策略 ### 3.2 标识稳定性 大多数场景不应修改实体的唯一标识,可在实体的整个生命周期中保持标识的稳定性。 4 实体的形态 4.1 业务形态 战略设计时,实体是领域模型的一个重要对象。领域模型中的实体是多个属性、操作或行为的载体。

    88811

    设计9——真电商之商品实体识别

    商品系统的设计与构建,从某种程度上来讲,就是围绕SPU和SKU来进行的。但是只有这两个粗浅的概念,并不足以描述一个商品信息,今天,我们一起来聊一聊商品到底有哪些信息,进一步完善商品系统的设计。 ? 需要注意的是商品类型这个属性,考虑到我们构建的是一个B2C的站点,同时还需要兼容多商家2C的设计,那么应该从商品的售卖方去区分商品是属于自营还是第三方。 但是有一些商品本来就没有条形码,或者说有些商家有一套自己的标准,那么在设计系统时就需要考虑兼容了。所以必须是两个字段。 ? ? ? ? ? 差点误了一个大事,遗漏一个很重要的实体。我们把它抓出来描述清楚吧。 ? 我们再看看商品的一些信息,还有商品描述,注意噢是一个富文本框,支付方式那里,有一个叫“预售”的家伙。 经过我们一番的整理,商品的实体信息暂时完善起来了,为了方便我们的理解和后续的梳理,我们把他们放到一起,稍微整理下他们之间的联系。 ? 怎么样?是不是看上去清爽多了?一目了然了?

    30720

    设计4——隐藏需求及实体的挖掘办法

    也开始学会如何从功能点中去寻找实体。 也许你会觉得我们寻找出来的实体,相对简单,而且寻找的功能点也不够完备,用这些功能点和实体,很难串联起来实现一套完整的系统,今天,我们将学习一个新的法门——系统的隐藏实体和隐藏功能的识别与搜寻。 ? 今天我们对这些实体进行再一次的分析,挖掘系统中隐藏的实体和功能点。 (各自维护了一套数据来源于配送的采集,极为有价值),所以在设计上也加细致,这里算是隐藏了一个比较深的功能误区,省(一级)、市(二级)、区(三级)、四级地址都需要单独维护了。 所以在进行系统分析和设计的时候,不要觉得枯燥无聊,除了要对隐藏的功能要进行挖掘,还要打起精神,多回顾一下之前的设计,看一看有没有遗漏的地方。 ?

    18620

    DDD领域驱动设计实战(03)-深入理解实体

    不应通过对象的状态形式和历史,来区分不同实体。对于什么是相同的东西,模型应该给出定义。 那么如何正确使用和设计实体呢? 3 唯一标识 实体设计早期: 关注能体现实体身份唯一性的主要属性和行为及如何查询实体 忽略次要的属性和行为 设计实体时,首先考虑实体的本质特征: 实体的唯一标识 对实体的查找 而不要一开始就关注实体的属性和行为 参见 DDD领域驱动设计实战 - 创建实体身份标识的常用策略 3.2 标识稳定性 大多数场景不应修改实体的唯一标识,可在实体的整个生命周期中保持标识的稳定性。 4 实体的形态 4.1 业务形态 战略设计时,实体是领域模型的一个重要对象。领域模型中的实体是多个属性、操作或行为的载体。 最后,通用语言应直接反映在代码中,而要保持设计文档的实时更新是很困难的。 5 创建实体 新建一个实体时,我们总期望通过构造器就能初始化足够多的实体状态,因为这样更容易通过各种条件查找到该实体

    10420

    《OEA - 实体扩展属性系统 - 设计方案说明书》

    如果有了扩展属性,我们则可以在任意实体上扩展各种新的属性,界面也就相应地成了“动态”列。 1.3 分离只读/视图属性 实体设计中常常会添加一些只读的属性,它的值是使用实体当前的值经过计算后得出。 在 OEA 中,实体设计为分布式对象(简单地说,就是客户端和服务端重用一套实体代码。可以参见CSLA框架设计书籍《Expert C# 2008 Business Objects》。) l 动态列 2.2 非功能需求分析 l 运行时性能 实体属性可以说是实体设计中最重要的部分。而它的性能好坏则关系到系统中每一个实体的每一个属性,这些属性都直接关系到应用的性能。 所以我们需要把实体扩展属性系统设计为一个独立的 DLL,这样,它就可以在非 OEA平台的环境中使用。 前面的设计方案中提到,这个类主要作为所有实体类的基类,提供值的获取、设置等。

    74271

    元宇宙:超越现实体验,Meta-Architect能设计什么?

    以前我们在讨论空间的时候,是二维的平面图,更进一步,有了3D软件的加持,我们在3D软件里讨论空间设计,有了VR设备,我们扩展了现实空间,多了一种数字空间,在数字空间里时间这个维度变成了可以被设计的维度, 我们在四维空间里进行设计,再加上现实的三维,我们真正所设计的空间需要考虑7个维度的因素。 当个体完成了虚拟身份的构建,他才能在实体空间和数字空间之间实现自由切换。 虚拟身份随着技术的发展,从最低级的"昵称",近些年进阶为虚拟形象(捏人),甚至有数字人的趋势。 软件体验设计实验师设计的是多模态的体验。 至此,元宇宙的设计师,至少需要掌控模态+现实空间+数字空间的10+维度的元素。 Meta-Experience / 服务设计 x 叙事 服务设计是最接近于顶层规则设计的学科。往往涉及到规则、流程的设计,这是一种事物运行机制的设计。除此之外,叙事,也是一种运行机制的设计

    51520

    实体工厂(拦截处理实体操作)

    实体接口 有心的同学可以发现,每一个实体类都有实现一个IEntity接口,这就是实体接口。 实体接口IEntity,抽象实体对象的添删改存操作,支持访问脏数据和扩展属性! Extends 实体工厂 实体工厂接口IEntityOperate,抽象提供实体类的元数据、查询、事务、设置! 实体类的各种元数据一般可以通过内嵌静态类Meta访问,也可以通过实体工厂接口IEntityOperate访问,以便于设计各种灵活功能。 提供实体类和数据表相关信息 唯一主键 Unique。XCode强烈推荐使用唯一主键,因为许多特色功能要求有唯一主键才能支持 实体会话 Session。 场景二:多个实体类要做修改日志,重载Insert/Update/Delete后调用以下方法,把实体对象中被修改(IsDirty有脏数据)的字段和数值拼成字符串写入日志表 ?

    32630

    Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成

    前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 ORM 的功能。 由于在 09 年最初设计时,ORM 部分的设计并不是最重要的部分,那里 Rafy 的核心是产品线工程、模型驱动开发、界面生成等。 在此初步方案上,还需要考虑:分层架构、组件间依赖、以及旧代码的兼容性设计。 以下是整个方案的分层设计: SqlTree:核心的、可重用的 Sql 语法树层。 EntityQuery:把 SqlTree 作为类库引用,同时整合领域实体实体属性的设计。 Query Interface:以 IQuery 接口的方式提供给应用层。 组件详细设计 Sql 语法树 使用解释器模式设计,用于描述 Sql 查询语句。 所有树节点都从 SqlNode 继承,并拥有自己的属性来描述不同的节点位置。

    58870

    JS魔法堂:再识ASCII实体、符号实体和字符实体

    而所有浏览器均能识别所有的实体编号。 注意:实体名是大小写敏感的哦! 三、3种实体类型                                        实体分为ASCII实体、字符实体和符号实体。 四、通过outerHTML,innerHTML,innerText,textContent和value操作实体    首先我们需要将3种实体类型分成两类,ASCII实体为一类,字符实体和符号实体为一类。 对于ASCII实体      1. 非表单元素的outerHTML和innerHTML只能获取实体名或实体编号;      2.  对于字符实体和符号实体      只能获取对应的字符,无法直接获取实体名和实体编号。 五、总结                                     若有纰漏请大家指正,谢谢。

    54980

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 腾讯云区块链服务平台 TBaaS

      腾讯云区块链服务平台 TBaaS

      腾讯云区块链服务(TBaaS)构建于腾讯云基础之上,让您在弹性、开放的云平台上快速构建自己区块链服务,极大的降低您实现区块链底层技术的成本,简化区块链构建和运维工作,同时面对各行业领域场景,满足您的个性化需求,一站式快速交付定制区块链服务。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券