在MVC Web应用程序框架的上下文中使用repository pattern来将存储检索的特定机制与Controller分离。
每当我最终使用此模式时,每个唯一查询的存储库类中的方法都会爆炸。例如,在我之前链接的文章中有7个:
我可以想象更多:
基本上,在这种模式下,每个唯一的where子句条件集将有一个方法,这样方法与唯一查询同构。这是坏事吗?是否有更一般的模式可用于防止这种方法爆炸?
(12)提出了一个相关问题 - 问题存储库是否应该泄漏问题与用户之间关系的细节?
答案 0 :(得分:1)
所有查询的共同点是什么?嗯......他们都是查询...... :)他们都接受一些参数并返回一些结构对象。
您可以创建一个利用该事实的通用抽象接口/类:
(C#)
public interface IQueryHandler<TQuery, TResult> where TQuery : IQuery<TResult>
{
TResult Handle(TQuery query);
}
它不仅可以帮助您解耦和抽象您提到的所有类型的查询,它在Depedency Injection和应用横切关注点方面也非常有用。
这两篇教导我的文章详细解释了它:
它在C#中,但您可以在支持模板的每种语言(c ++,java等)中创建镜像实现。
答案 1 :(得分:0)