`
huyosin
  • 浏览: 8462 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

领域相关的模型里面需要3种对象

    博客分类:
  • DDD
阅读更多
基本上一个应用程序里面的领域相关的模型里面需要3种对象:
1。值对象(Value Object),没有身份,内容表示一切,譬如我和weihello都去银行里面存取100大洋,那这个100RMB是一个值对象

2。实体对象(Entity),需要持久,不是按照内容,而是按照它的身份来区分,也就是说即使内容完全一样,也不是同一个对象。这个身份在内存里面是它的实例地址,在数据库里面是关键字,最常见的就是OID.这个实体对象并不是纯数据,它处理本身的实体模型,例如Accout,它的 withDraw,它的子Account等等,它也处理自己和其他实体对象之间的关系,例如订单里面的订单行,都是应该在这个Account里面实现的,而不应该有一个什么控制类。在一个Web应用程序里面,涉及到对象关系的一般只需要一个(或几个)DTOFactory负责所有对象的DTO和 Entity之间的组装和拆份,不需要专门的管理,这一部分也是和数据建模最相近的地方。

3。服务对象(Service),这是为我们提供服务的类,譬如银行里面服务员,她帮助我们把钱从一个账户转到另外一个账户,并记录相应的交易。

对象的作用是对它自己的内部状态负责,如果它需要存取很多其它对象的状态进行运算,那叫做特性忌妒,是要重构的。应该把这些代码移到那个持有这些状态的类里面


辨别一些名词:
1。VO:实际上很模糊,通常指ValueObject和ViewObject
2. ViewObject,界面展现需要的对象,如Struts的FormBean
3。Value Object,早期被作为ValueObject和Transfer Object的总称。实际上Value Object的真正意义在于它的内容,而不是身份
4。Transfer Object:数据传输对象,在应用程序不同层次之间传书对象,在一个分布式应用程序中,通常可以提高整体的性能
5。PO:也许就是Persistent Object,基本上就是Entity了
在不同的体系结构和实现方式里面,这些对象有可能重复,也有可能不重叠。如果你要做一个对所有的体系都能够方便移植的框架,那么每一种对象都需要严格区分。例如JDO的PO不能作为TO,应为它不能脱离PM,譬如你可以选择用ViewObject(如Struts的FOrmBean)直接作为 TO,但在tapestry和Webwork里面就不合适了。但在很多时候,能够方便实用是最重要的,不要过度设计就是了。

分享到:
评论

相关推荐

    three3D 模型切换Demo

    3. **相机控制**:为了让用户能够观察和交互3D模型,通常会配备一套相机控制系统,如OrbitControls或FirstPersonControls。这些控制器允许用户通过鼠标或触摸进行旋转、平移和缩放操作。 4. **光照处理**:在3D环境...

    fme实现gdb格式管线数据生成3dtiles格式三维管线模型

    总结来说,通过FME将GDB格式的管线数据转换为3DTiles,可以实现高效、互动的Web三维管线模型展示,这对于城市规划、资产管理、公共安全等领域具有重要价值。熟悉这种转换技术对于软件开发者和GIS专业人员来说是必要...

    3D烧烤炉模型

    "3D模型"标签进一步明确了这是一个三维数字对象,这类模型是通过专业的3D建模软件,如Autodesk 3ds Max、Blender或SketchUp等创建的。3D模型的构建过程包括了建模、纹理绘制、光照设置、动画制作等多个步骤。建模...

    3d max丰富的模型素材

    "3ds Tutorials"这个文件名可能表示这是一个教程集合,里面可能包含了多种类型的3ds模型,同时提供了一些教学指导,教你如何在3D Max中使用这些模型,或者如何对它们进行修改和优化。 在学习和使用这些模型素材时,...

    3D-3x3.zip

    3D-3x3.zip这个压缩包文件很可能包含了一个关于3D建模的项目或教程,特别是与d3js和3js这两个JavaScript库相关的应用。 d3js(Data-Driven Documents)是一个强大的JavaScript库,主要用于数据可视化的构建,尤其...

    SOLOV2代码和预训练模型

    SOLOV2是一种先进的目标检测算法,源自计算机视觉领域的深度学习技术。它的全名可能是"Single Shot Learning of Object and Oriented Bounding box for Real-time Object Detection",即单次学习对象与定向边界框,...

    IOCP模型总结:里面有理论总结和代码实现

    IOCP,即I/O Completion Port(I/O完成端口),是微软Windows操作系统中提供的一种高性能I/O模型,特别适用于处理大量并发的异步I/O请求场景。相比于传统的基于线程的I/O处理方式,IOCP模型能够显著提升系统的效率和...

    行业分类-设备装置-一种3D交互式在线广义对象与实践平台.zip

    标题中的“行业分类-设备装置-一种3D交互式在线广义对象与实践平台”表明了这个压缩包的内容是关于设备装置领域的,具体涉及到的是3D交互技术在在线实践平台上的应用。3D交互技术是一种利用计算机图形学和虚拟现实...

    遥控外壳SolidWorks模型

    标题 "遥控外壳SolidWorks模型" 暗示了这是一个与3D建模相关的项目,具体是使用SolidWorks软件设计的一款遥控器的外壳模型。SolidWorks是一款广泛使用的三维计算机辅助设计(CAD)软件,专用于机械工程和产品设计。...

    消防栓MAX模型

    这个“消防栓”文件很可能是ZIP或RAR等压缩格式,里面包含的模型文件可能是.max(3D MAX的原生文件格式),还有可能有纹理贴图文件如.jpg或.tga。在解压后,用户可以在3D MAX 2012环境中打开模型文件,进一步编辑或...

    类和对象的设计及之间的关系

    面向对象编程是软件开发中的一种核心思想,它通过模拟现实世界中的实体来构建代码结构。在设计类和对象时,我们需要遵循一系列步骤以确保模型的有效性和可扩展性。 7.1 建立类和对象的模型是面向对象设计的起点。这...

    领域模型-聚合和聚合根

    聚合和聚合根是领域模型里面很重要的一个概念,其实我们在从真实世界对业务对象进行识别和概念建模的时候,关注的就是聚合根,这才是我们真正要管理的业务对象。一个对象可能有多个层次,也可能有多个子实体,但是...

    Simulink模型截取矢量图的方法.pdf

    3. **设置页面大小**:根据需要截取的Simulink模型大小调整Visio页面尺寸,以确保最终的矢量图能够完整地展示在页面上。 ##### 第二步:关闭Simulink中的阴影效果 1. **打开Simulink模型**:确保已经打开了需要截取...

    AllEngineOMDs+对象模型图【OMD】阅读指南.

    在GIS(地理信息系统)开发领域,ArcGIS Engine是一款强大的开发工具,它允许开发者构建桌面、移动和Web GIS应用程序。在ArcGIS Engine的二次开发过程中,理解对象模型图(Object Model Diagram,简称OMD)至关重要...

    新中式双人床模型

    在IT行业中,3D模型是一种数字技术,用于创建三维图形或虚拟对象,广泛应用于游戏开发、室内设计、家具模型设计等多个领域。"新中式双人床模型"是针对家具设计的专业3D模型,旨在为设计师提供一个逼真的、可交互的...

    低调简约室内家装模型

    这种文件格式包含了3D对象、材质、灯光、相机和其他相关设置的全部信息,用户可以打开该文件在3ds Max中查看或编辑模型。 "max3108.jpg"则是一个JPEG图像文件,通常用来展示3D模型的预览效果。设计师可能会通过渲染...

    opengl画一个立方体,里面有一个茶壶模型

    OpenGL是一种强大的图形编程库,广泛应用于游戏开发、科学可视化、工程设计等领域。在这个主题中,我们将探讨如何使用OpenGL绘制一个包含茶壶模型的立方体,并实现旋转效果。 首先,我们需要理解OpenGL的基础概念。...

    WavefrontObjLoader,WPF加载3DMAX OBJ模型文件类

    在3D图形编程领域,加载和渲染模型文件是常见的任务之一。`WavefrontObjLoader`是一个专门为Windows Presentation Foundation (WPF)设计的类,用于加载3D Studio MAX(3DMAX)导出的OBJ格式模型文件。OBJ是一种流行...

    玻璃茶几模型

    在IT行业中,3D模型是一种数字艺术形式,广泛应用于游戏开发、室内设计、产品可视化、建筑渲染等多个领域。本资源“玻璃茶几模型”显然属于3D建模的范畴,特别是针对家居设计和视觉呈现。下面我们将深入探讨与这个...

    一维云模型的c++程序代码

    一维云模型是一种模拟复杂系统不确定性的数学工具,它源于概率论和统计学,但在处理非确定性和模糊性时更具灵活性。在这个特定的压缩包中,包含了一个C++实现的一维云模型程序,名为"OneDim_Norm_Cloud_1",这为我们...

Global site tag (gtag.js) - Google Analytics