2009-08-12 57 views
3

我猜我们大多数人都必须在某个时候处理这​​个问题,所以我想我会问这个问题。封装谓词的模式/实践

当你在BLL中有很多集合,并且你发现你一遍又一遍地写同样的旧的内联(匿名)谓词时,显然有一个封装的例子,但是实现这个的最好方法是什么?

我目前正在使用的项目采用了古老的答案,静态类方法(例如用户类和静态UserPredicates类),但这看起来有点笨重并且有点警察出局。

我正在C#中工作,所以在这方面保持最有用的,但我认为这是足够通用的问题,以保证听取其他语言。

另外我预计,随着LINQ和Lambdas的问世,将会出现这种差异,所以我有兴趣知道如何在.Net2.0和3.0/3.5两种风格下完成这项工作。

在此先感谢。

回答

2

Specification pattern可能值得一试。
随着一些多态性&它应该工作的泛型的使用。

+0

你首先得到了积分和荣誉给你。 – Stimul8d 2009-08-12 13:19:50

+0

我希望它有帮助。 – 2009-08-12 13:55:55

1

谓词本质上只是规范设计模式的实现。您可以阅读Domain-Driven Design中的规范模式。

+0

感谢您的书链接,...又一个添加到愿望清单! – Stimul8d 2009-08-12 13:19:14

+0

强烈建议您阅读本书,以此证明DDD在开始时非常困难。加入您的愿望清单:http://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202 – 2009-08-12 13:55:21