本篇博客简单描述了Repository模式在OEA中的应用。
不使用Repository时的问题
OEA框架中使用了DDD的思想,面向领域对象进行开发。在DDD中,有很多重要的概念,例如:聚合实体对象、值对象、仓储、工厂、服务等。(不太了解的Repository和DDD的朋友,可以看Evans写的《Domain Driven Design》。)
在OEA中,实体的实现框架使用了CSLA分布式框架。原来为了简单并保持和CSLA开发模式的兼容,一直都把实体的获取模式直接以静态方法的方式直接写在实体的对应列表类中。例如下面这段代码:
随着应用的慢慢深入,出现了一些问题:
基于以上的原因,团队决定使用Repository模式进行代码的重构。
Repository如何解决以上问题
具体的看一下类图:
可以看出,整个结构比较简单:
小结
在OEA中使用Repository模式重构后,到目前为止已经使用了一个月左右,大家反应比起原来的调用模式好多了,同时还支持了客户化及其它实体框架引入的可能。总体上来说,重构还是比较成功的。
在以前其它的系统的开发中,基本上也都使用到了Repository模式,这种模式在数据库应用程序的开发中,确实十分常用。以后可以考虑对它进行一些通用框架层面的设计。