Topic: 【转贴】使用Specification模式简化查找操作 |
Print this page |
1.【转贴】使用Specification模式简化查找操作 | Copy to clipboard |
Posted by: yamakasy Posted on: 2003-09-27 09:07 使用Specification模式简化查找操作 [主要参考资料:Refactoring to Patterns]之 Replace Conditional Searches with Specification 实际编程中,往往会根据各种条件查找某个Entity, 比如ProductFinder…有各种查找方法
随着时间增长,各种查询可能呈指数膨胀: Over time, the combination of ways to find products grows: ProductFinder…
最终你的系统会充满了许多Finder方法,很难维护。 Specification模式就是解决这个问题的。 Speicification建议把每个查找条件(search criterion)抽出来变成类, 而Client可以任意组合Specification获得适合的查找条件. 变为
然后通过组合
selectBy函数为:
(注:其实Patterns of Enterprise Application Architecture一书的 Query Object 一章也有讲到这种形式的pattern的,可以参考, 而且Hibernate的新特性也出现这种组合Search Critiea的,现在没时间研究 希望有机会的话也会去研究一下Hibernate。) 该书中举的例子查找物体的Repository是内存中的Collection, 附件是根据Specification的精神结合Visitor模式来拼SQL的. 希望有兴趣的人共同研究,因为现在O/R mapping技术肯定也是很重要的一块。 目前只作了Where语句部分,对于多表可以给出Specification中定义的 所有条件,不过表连接条件没有定义过,所以不会在SQL中出现。 还有要查询的Fields我现在还没加,只是简单的SELECT *, specification.rar (5.19k) |
2.Re:【转贴】使用Specification模式简化查找操作 [Re: yamakasy] | Copy to clipboard |
Posted by: ajinjin Posted on: 2003-09-27 14:24 阅,不错 |
3.Re:【转贴】使用Specification模式简化查找操作 [Re: yamakasy] | Copy to clipboard |
Posted by: yuantiou Posted on: 2003-09-30 15:07 有refactoring之前的代码么? 如果有,可以让我看看么? |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |