WEB开发网
开发学院软件开发C语言 趣味编程:C#中Specification模式的实现(参考答案... 阅读

趣味编程:C#中Specification模式的实现(参考答案 - 上)

 2010-09-30 21:02:07 来源:WEB开发网   
核心提示:Specification模式的作用是构建可以自由组装的业务逻辑元素,不过就上篇文章的示例来看,趣味编程:C#中Specification模式的实现(参考答案 - 上),“标准”的Specification模式的实现还是比较麻烦的,简单的功能也需要较复杂的代码,也就是这么一段逻辑,因此,不过,既

Specification模式的作用是构建可以自由组装的业务逻辑元素。不过就上篇文章的示例来看,“标准”的Specification模式的实现还是比较麻烦的,简单的功能也需要较复杂的代码。不过,既然说是“标准”的方式,自然就是指可以在任意面向对象语言中使用的实现方式,不过我们使用的是C#,在实际开发过程中,我们可以利用C#如今的强大特性来实现出更容易使用,更轻量级的 Specification模式。

当然,有利也有弊,在使用“标准”还是“轻量级”的问题上,还要根据你的需求来进行选择。

Specification模式的关键在于,Specification类有一个IsSatisifiedBy函数,用于校验某个对象是否满足该 Specification所表示的条件。多个Specification对象可以组装起来,并生成新Specification对象,这便可以形成高度可定制的业务逻辑。从中可以看出,一个Specification对象的关键,其实就是一个IsSatisifiedBy方法的逻辑。每种对象,一段逻辑。每个对象的唯一关键,也就是这么一段逻辑。因此,我们完全可以构造这么一个“通用”的类型,允许外界将这段逻辑通过构造函数“注入”到 Specification对象中:

public class Specification<T> : ISpecification<T> 
{ 
  private Func<T, bool> m_isSatisfiedBy; 
 
  public Specification(Func<T, bool> isSatisfiedBy) 
  { 
    this.m_isSatisfiedBy = isSatisfiedBy; 
  } 
 
  public bool IsSatisfiedBy(T candidate) 
  { 
    return this.m_isSatisfiedBy(candidate); 
  } 
}

1 2 3 4  下一页

Tags:趣味 编程 Specification

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接