2009-08-12 56 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