Welcome

首页 / 软件开发 / .NET编程技术 / Spring.NET企业架构实践(二)

Spring.NET企业架构实践(二)2012-07-31 博客园 刘冬.NETNhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(二)——领域模型

什么是领域模型?领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专 注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。

当我们不再对一个新系统进行数据库提炼时,取而代之的时面向对象的模型提炼。我们必须大刀阔斧地对业务领域进行细分,将一个复 杂的业务领域划分为多个小的子领域,同时还必须分清重点和次要部分,抓住核心领域概念,实现重点突破。

著名建模专家Eric Evans提出了Domain Driven Design(领域驱动设)。最初层次只分为三层:表现层、业务层和持久层,DDD其实告诉 我们如何让实现业务层。

领域模型种类

传统模型分为两种:实体(Entity)和值对象(Value Object),服务(Service)成为第三种模型元素。

领域驱动设计有两种常用的模式:贫血模式和充血模式。

贫血模式:只有状态,没有行为。

贫血模型

public class OrderInfo
{
public virtual int OrderId { get; set; }
public virtual DateTime Date { get; set; }
public virtual string UserId { get; set; }
public virtual decimal OrderTotal { get; set; }
public virtual IList<LineItemInfo> LineItems { get; set; }
public virtual int? AuthorizationNumber { get; set; }
}
}

Service

public class OrderManager
{
public IOrderDao CurrentDao { get; set; }
public object Save(OrderInfo entity)
{
ProcessCreditCard(entity);
return CurrentDao.Save(entity);
}
private void ProcessCreditCard(OrderInfo entity)
{
Random rnd = new Random();
entity.AuthorizationNumber = (int)(rnd.NextDouble() * int.MaxValue);
}
}