日期:2014-05-17  浏览次数:20609 次

依赖具体数据的设计
兄弟们,最近遇到一个问题,

举个例子:需求: 报表查询时当书的数量大于10,或者作者是ddd 就会触发一个动作

比如数据库结构:定义了规则需要的变量
 模块 Key  
 001 bookCount
 001 author

代码中可能要给对应的key赋值,例如:
map.put("bookCount",10)
map.put("author","ddd")

问题是这样就跟业务结合的太紧,也就是要知道数据库中定义的关键字,编程时需要在代码中写入这些关键字,这样感觉耦合太高,而且规则条件等也可能发生变化,有没有办法进行解耦?谢谢




------解决方案--------------------
可以写成配置文件。
程序启动的时候加载这些数据就好了。
------解决方案--------------------
如果是想把 查询 和 “>10 =ddd" 这些特殊处理解耦,
有很多种办法,比如用spring AOP ,把>10 和 =ddd 作成查询方法的切面,
如果觉得spring AOP太麻烦,可以用动态代理把查询过程代理起来,在代理中作特殊处理。
这样查询的代码就是查询的,特殊处理的就是特殊的,二者解耦


map.put("bookCount",10)
map.put("author","ddd")这种赋值必然会出现在代码的某个地方中啊,
因为这已经是你的业务参数了,
一般来说用配置文件存储就是比较好的办法了。