DDD~我们应该知道的Model,DomainModel和ViewModel

简介:

图在前

目前项目中可能出现的三种Model模式,对于我们现在开发的一个项目,我觉得使用DDD的思想来设计模型比较清晰,使用DDD的思想把模型model分成了如下三种:
下面是我微博中的截图:
上面的图中把模型分成了ViewModel,它与页面相关,DomainModel,它与业务模块相关,Model,它与数据库相关,它是对数据表的一种映射,一般用XML来表示。

文字说明在后

下面我们来举个例子,用认识一下这三个模型:
下面以用户业务为例,来讲一个这三种模型

UserDomainModel

public class UserDomainModel
    {
        [Required]
        [Display(Name = "用户名")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "电子邮件地址")]
        public string Email { get; set; }

        public int UserID { get; set; }

        public Common_Area Common_Area{get;set;}

        public User_Extension User_Extension{get;set;}
     }
而对于用户业务它又有注册,登陆,这需要不同的view来呈现,这时需要ViewModel

LoginModelRegisterModel

public class LoginModel
    {
        [Required]
        [Display(Name = "用户名")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "密码")]
        public string Password { get; set; }

        [Display(Name = "记住我?")]
        public bool RememberMe { get; set; }
    }

    public class RegisterModel
    {
        [Required]
        [Display(Name = "用户名")]
        public string UserName { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "{0} 必须至少包含 {2} 个字符。", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "密码")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "确认密码")]
        [Compare("Password", ErrorMessage = "密码和确认密码不匹配。")]
        public string ConfirmPassword { get; set; }
    }
而这些数据如何与数据库关联,这会用到了model,即我们的表,对于用户业务来说,它可以有user_info,user_Extesion,Common_area等model组成,而domain model是将这三张表进行组合,以user_info为主导,其它两个表于辅助,形式一个整体,而这个
整体我们在DDD里叫它聚合,整理里的标识叫它聚合根,一般是一个Guid码。
 本文转自博客园张占岭(仓储大叔)的博客,原文链接: DDD~我们应该知道的Model,DomainModel和ViewModel,如需转载请自行联系原博主。
目录
相关文章
|
6月前
组件v-model
组件v-model
61 0
|
4月前
|
存储 前端开发 算法
MVC(Model-View-Controller)架构
MVC架构帮助开发者构建清晰、可维护和可扩展的Web应用程序。
40 2
|
4月前
|
项目管理
项目管理问题之Entity和BaseEntity在DDD的model层中起什么作用
项目管理问题之Entity和BaseEntity在DDD的model层中起什么作用
|
前端开发 JavaScript
08avalon - 数据模型($model)
08avalon - 数据模型($model)
44 0
|
6月前
|
JavaScript 编译器
组件 v-model
组件 v-model
|
前端开发 .NET 数据库
一起谈.NET技术,使用View Model从表现层分离领域模型
MVC架构模式是近年来编程世界里最长被提及的模式之一,Model-View-Controller(模型-视图-控制器,MVC) 模式将你的软件组织并分解成三个截然不同的角色: Model 封装了你的应用数据、应用流程和业务逻辑。
982 0
|
Android开发 Kotlin Java
Architecture -- ViewModel
1). 简介 ViewModel类旨在以生命周期意识的方式存储和管理UI相关数据。 ViewModel类允许数据在配置更改(例如屏幕旋转)后继续存在。 Android框架管理UI控制器的生命周期,例如活动和片段。
975 0
|
前端开发 C#
WPF MVVM 架构 Step By Step(6)(把actions从view model解耦)
原文:WPF MVVM 架构 Step By Step(6)(把actions从view model解耦)   到现在为止,我们创建了一个简单的MVVM的例子,包含了实现了的属性和命令。我们现在有这样一个包含了例如textbox类似的输入元素的视图,textbox用绑定来和view model联系,像点击button这样的行为用命令来联系。
1552 0
|
前端开发
利刃 MVVMLight 2:Model、View、ViewModel结构以及全局视图模型注入器的说明
原文:利刃 MVVMLight 2:Model、View、ViewModel结构以及全局视图模型注入器的说明      上一篇我们已经介绍了如何使用NuGet把MVVMLight应用到我们的WPF项目中。
1021 0
|
前端开发
第5部分.把数据绑定到MVVM——Model-View-ViewModel体系结构的介绍
Model-View-ViewModel(MVVM)体系结构模式是在XAML的基础上发明的。 该模式强制三个软件层之间的分离 - XAML用户界面,称为视图; 基础数据,称为模型; 以及View和Model之间的中介,称为ViewModel。
1894 0