论坛首页 Java企业应用论坛

关于领域建模的工厂和仓库或资源库的疑问

浏览 1708 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-27   最后修改:2011-11-28
最近看DDD的infoQ简版,实体对象的工厂创建实体对象以及附属的对象,资源库是负责从持久存储中换醒对象。看起来蛮清楚的,但我用在实际中有迷惑了。
我需要把一个文件导入系统,系统也使用文件存储,导入的文件格式和系统文件格式一致。

第一种方法:
这时按DDD来说应该要工厂根据导入文件创建实体类,再交给资源库保存。
当第二次需要程序中需要使用这个实体时,应该是问资源库直接要,资源库使用文件工具读取文件,并装配成实体对象,也就是唤醒对象。
问题出现了,资源库分析文件和工厂分析文件的逻辑是一样的,如果是这样代码就重了。

第二种方法:
这倒也好解决,直接把分析文件得到实体对象的逻辑封装成一个分析类就好了,但这样感觉工厂和资源库的方法里都是空空的,感觉不太对头,而且两个里面好些逻辑都是一样的。
引起思考,到底应不应既有工厂又有资源库,两个的做的事差不多啊(我指的是在本例中,在用数据库我是能明白的,现在是两个的逻辑刚好一样了)。

第三种方法:
导入时就直接用一个服务类调用问文件包把文件拷贝到系统,当做是系统的存储数据,再调用资源库当成已经数据直接换醒它。不使用工厂了,直接当成已有对象来处理。(其实两个装配逻辑并不完全一样,第一次导入时没有聚合对象,以后装配时会有聚合对象,直接把第一种看成是聚合为空的装配,把装配做的灵活一点有聚合就装,无就不装就可以,这倒也没问题)

大家觉得哪种好,或者我的方法都不对,更加欢迎批评指正。
经过一晚上,自己想明白了。
如果要导入的文件格式真的和存储的格式一致,那第三种就是合适的。
但是我这个项目,导入文件以后还要支持其它类型,而且文件存储没有必要使用导入的文件格式,因为它是原材料,每次程序还要经过再加工,所以应该把程序的文件结构设计成加工的结果,以后资源库唤醒时就容易多了。也就是我要使用第一种方法。想明白了,开心。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics