对象结构

根对象:领域模型中的聚合根。代表了领域模型中一个完整的领域概念,如订单。

 

子对象:从属于另一个对象(父对象),是父对象的一部分。子对象的生命周期小于等于父对象的生命周期,如订单项。

 

友元对象(独创概念):被另一个对象引用的对象称之为友元对象。两个对象之间不存在父子关系,如订单项引用商品,订单引用客户。原则上,友元对象不应受引用友元对象的对象的约束。但根据业务规则,友元对象向外提供规则接口,其它对象可在规则接口基础上挂接业务规则,以影响友元对象的增删查改。 引用友元对象的对象保持友元对象的一个主键甚至更多信息。保持友元对象的部分信息是为了使在友元对象在被修改或删除时,保持对象在引用时的完整性,如商品价格,订单项记录的商品价格是在引用商品时的当时价格,即使商品已经删除,订单项也仍然知道当时选择的是什么商品。

 

友元对象代理: 通过引用友元对象的对象中保持的友元对象的信息,创建一个友元对象的代理对象,友元对象代理解决了友元对象延时获取的问题,只有在调用到友元对象的业务方法或其他信息时,才获取友元对象,而友元对象代理上的信息也保证了必要信息及对象结构的完整性。

 

===========================================================

2010-5-7

友元对象,仅仅是一个用来说明对象图中对象关系的一个概念,就象子对象、父对象等关系,对实现上没有特别限定与要求。友元对象代理,这是针对友元对象在仓储方面而提出的,即使用增加数据库的冗余度,来减少数据库的访问次数。也就是说,在使用友元对象的对象的数据存储表中保存友元对象的主键及其它一些关键信息,使用这些信息在对象被读取时,生成一个友元对象的代理,这个代理包含了这些信息,当真正需要使用友元对象的业务及其它一些信息时,才真正读取友元对象,并替换掉代理。

这说明,在真正领域建模时,描述的是对象图,模型之间的关系,它们是纯粹的。如果内存够大,CPU够快,又不需要网络之间的序列化或数据交换,也不会当机停电之类的,那么也就可以不用仓储,也就没有什么延时加载之类的说法。所以,在设计实现领域模型时,应该是纯粹的,至少尽量不受外界环境污染,为适应外界环境而提出的概念、开发的框架,是对领域模型的辅助,不应该影响领域模型。所以友元对象代理,是为解决频繁数据访问的,它不应该成为领域模型概念的一部分,它最多只仓储框架中实现的一部分。

转载于:https://www.cnblogs.com/stwyhm/archive/2010/04/23/1719007.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】pthread mutex 基本用法

转自:pthread mutex 基本用法 | feng 言 feng 语 锁是程序中经常需要用到的机制,尤其是多线程的程序中,如果没有锁的帮助,线程间的同 步就会非常麻烦甚至不可能。pthread中提供了mutex互斥量这种锁,在 linux 下经常 用…

交易机项目工作日志--2013-1-31

今天要在王哥新作的板子上实现关机功能。 当按关机键时,GPH0_1管脚发出中断型号,我检测到后给GPH0_0管脚置高电平来实现关机。 所以在系统启动和运行时,要保证GPH0_0管脚始终维持低电平,否测就关机了。 但开发板提供的bsp有一个电…

【转】软件工程能力漫谈:比质量更重要的,是项目管理能力

转自:软件工程能力漫谈:比质量更重要的,是项目管理能力 | ArchSummit 章淼老师在软件工程能力方面,积累了多年的经验,这个话题他之前也分享过多次,整体上内容有修改调整。 章老师博士毕业后在清华待了 12…

浅尝EffectiveCSharp_1

Item 1: 使用属性,避免可访问的数据成员 Use Properties Instead of Accessible Data Members 属性允许你创建一个想可访问数据的接口,而且仍然有使用方法的所有优点.Properties enable you to create an interface that acts like data access but still has all the benefit…

WINCE驱动编写

一般我们在驱动程序中需用LocalAlloc保留一块存储空间,然后用LocalCopy将I/O端口映射到该地址上,以后就可以访问该保留下来的地址了。 而对中断的处理各种设备不尽相同。如果是一个内置设备(Built In),一般在oalintr.h…

【转】DICOM文件格式剖析(初识)

转自:DICOM文件格式剖析(初识)_MoreThinker的博客-CSDN博客_dicom格式 初识DICOM(适合初学者) 初识DICOM文件,发现网上的资料有点少,大部分的资料都不全,在这里做一下总结&#xf…

SVN各个状态:A C D M G U R I具体含义

svn status命令查看svn状态 ?:不在svn的控制中 A:add,新增 C:conflict,冲突; tc以他们改得为准 D:delete,删除 M:modify,本地已经修改 G:modify and merGed…

WINCE Driver 心得总结

一. Windows CE的驱动程序的区分 1.从加载以及接口方式来区分 可以分为本机设备驱动(Built-In Driver)、可加载驱动(Loadable Driver)以及混合型驱动。 (1)本机设备驱动 本机设备驱动…

【转】进阶 JavaScript 必知的 33 个点【进阶必备】

转自:进阶 JavaScript 必知的 33 个点【进阶必备】 进阶 JavaScript 必知的 33 个点【进阶必备】 Original 前端小菜鸡之菜鸡互啄 前端开发爱好者 2022-04-11 08:32 收录于话题#javaScript进阶1个 点击下方“前端开发爱好者”,选择“设为星标” 第一…

Struts配置

Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件。web.xml文件是配置所有web应用的而struts-config.xml文件是struts专用的配置文件,事实上也是可以根据需要给这个配置文件起其他名称的. Web应用的发布描述文件:web应用发布描述文件…

【转】开发者需要了解的领域特定语言(DSL)

转自:开发者需要了解的领域特定语言(DSL) - 知乎 领域特定语言是在特定领域下用于特定上下文的语言。作为开发者,很有必要了解领域特定语言的含义,以及为什么要使用特定领域语言。 领域特定语言domain-specific lang…

POJ 2240题(Floyd)

//使用Floyd的变形实现//这就是个套汇的问题&#xff0c;可以用Floyd求最大环&#xff0c;然后判断是不是大于1。#include <cstdio>#include <string>#include <map>using namespace std;map<string,int> MAP;double value[31][31];double rate;double…

【转】自动化构建、自动化部署发布一览

转自&#xff1a;自动化构建、自动化部署发布一览 - 知乎 在软件系统开发的过程中&#xff0c;一个项目工程通常会包含很多的代码文件、配置文件、第三方文件、图片、样式文件等等&#xff0c;是如何将这些文件有效的组装起来最终形成一个可以流畅使用的应用程序的呢&#xff…

承博士:让云计算落地生根的中国云计算平台

2010-01-22 09:48:41 [0评论 ] 金蝶中间件秉承自主创新&#xff0c;努力打造自主知识产权的云计算平台;金蝶Apusic云计算解决方案是为大型企业和组织提供私有云的解决方案&#xff0c;通过云计算中间件平台&#xff0c;为云计算提供落地的务实价值。金蝶中间件与国际厂商合作&…

【转】g++以及gcc的区别

转自&#xff1a;g以及gcc的区别 - 知乎 GCC &#xff0c;gcc 和g&#xff1a; 一直没搞清这几个东西的概念&#xff0c;搜了半天看到了一个不错的解释&#xff0c;所以大致记录一下&#xff0c;以免以后再忘记&#xff0c;链接。&#xff08;原谅没找到原文出处&#xff09;…

Microsoft Windows CE .NET 中的中断体系结构

概述 通过 Microsoft Windows CE .NET&#xff0c;Microsoft 已经升级了 Windows CE 的中断体系结构。该操作系统 (OS) 所具有的处理共享中断的能力极大地扩展了 Windows CE .NET 支持许多中断体系结构的能力。本文从原始设备制造商 (OEM) 和应用程序开发人员的角度探讨了处理…

微软企业库5.0学习笔记(三十三)数据访问模块

前言 鉴于企业库5.0已经发布正式版&#xff0c;同时有广大读者的要求&#xff08;臭屁一下&#xff0c;o(∩_∩)o...&#xff09;&#xff0c;后面文章的内容和代码将基于Enterprise Library5.0和Unity2.0来写&#xff0c;感谢大家的一贯支持。 正文 数据库访问模块都能实现哪些…

ARM中断分析之一:中断控制器和CPU、外设的关系

“中断控制器”也是CPU众多外设中的一个&#xff0c;不同的是&#xff0c;它一方面接收其它外设中断引脚的输入&#xff0c;另一方面&#xff0c;它会发出中断信号给CPU。下图是一张中断控制器外设的框图&#xff0c;s3c2410的框图。 为了把中断控制器、CPU、外设联系起来&…

【转】Jenkins项目常用三种构建类型风格详解

转自&#xff1a;Jenkins项目常用三种构建类型风格详解_ぃ小小宇宙的博客-CSDN博客_jenkins项目类型 Jenkins构建的项目类型介绍 jenkins 的安装配置请参考&#xff1a;《jenkins war包安装部署&#xff0c;tomcatJDKmaven》 Jenkins中自动构建项目的类型有很多&#xff0c;…

ARM中断分析之二:裸机下面的中断处理

EINT4中断的裸机处理 这是基于S3C2410的EINT4中断的裸机处理&#xff0c;当中断发生时就把LED灯取反显示。下面是电路图。 上面是外部KEY连接到CPU的EINT4引脚上面&#xff0c;即&#xff1a;按下键就会产生一个中断。 按照先前介绍的&#xff0c;中断处理流程来介绍&#xff0…