你的位置:首页 > 软件开发 > ASP.net > [.NET领域驱动设计实战系列]专题三:前期准备之规约模式(Specification Pattern)

[.NET领域驱动设计实战系列]专题三:前期准备之规约模式(Specification Pattern)

发布时间:2015-05-14 11:02:31
一、前言  在专题二中已经应用DDD和SOA的思想简单构建了一个网上书店的网站,接下来的专题中将会对该网站补充更多的DDD的内容。本专题作为一个准备专题,因为在后面一个专题中将会网上书店中的仓储实现引入规约模式。本专题将详细介绍了规约模式。二、什么是规约模式  讲到规约模式,自然 ...

[.NET领域驱动设计实战系列]专题三:前期准备之规约模式(Specification Pattern)

一、前言

  在专题二中已经应用DDD和SOA的思想简单构建了一个网上书店的网站,接下来的专题中将会对该网站补充更多的DDD的内容。本专题作为一个准备专题,因为在后面一个专题中将会网上书店中的仓储实现引入规约模式。本专题将详细介绍了规约模式。

二、什么是规约模式

  讲到规约模式,自然想到的是什么是规约模式呢?从名字上看,规约模式就是一个约束条件,我们在使用仓储进行查询的时候,这时候就会牵涉到很多查询条件,例如名字包含C#的书名等条件。这样就自然需要引入规约模式了。规约模式的作用可以自由组装业务逻辑元素。Specification类有一个IsSatisifiedBy函数,用于校验某个对象是否满足该Specification所表达的条件。多个Specification对象可以组装起来,生成新的Specification对象,这样可以通过组装的方式来定制新的条件。简单地说,规约模式就是对查询条件表达式用类的形式进行封装。那这样的话,规约模式引入有什么作用呢?

三、为什么需要引入规约模式模式

  上面只是简单介绍了规约模式的作用——可以自由组装业务逻辑元素。这样文字表述未免枯燥了点,下面通过一个具体例子来说明下。

  对于在仓储中,我们经常会定义下面的接口

 public interface IProductRespository  {    Product GetById(Guid id);    Product GetByName(get='_blank'>string name);    IEnumerable<Product> GetNewProducts();  }

原标题:[.NET领域驱动设计实战系列]专题三:前期准备之规约模式(Specification Pattern)

关键词:.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。