DDD引入的几个问题
我在我们的项目中引入了ddd的分析方式,可能有点粗略,但是我尽量往ddd靠近,有几点迷惑:
1.统一语言:我们掌握需求信息,根据获取的用户需求列表来分析业务;根据我们的经验来抽取统一语言;我们使用统一语言来建模,实现对象之间的关联关系,但是最大问题是,我们确定的这个统一语言是在变化的,尤其是跟遗留系统产生冲突的时候,很多人不适应这种方式。我认为这种分析层次上的重构是相当必要的,但是会受到参与人员的业务和技术水平的影响,我们的参与人员中没有业务代表,只有熟知业务的开发人员,这个是我一直非常担心的。在这种情况下,各位有没有好的建议,如何降低这种需求片面性风险?
2.实体与值对象的区分:值对象,应该是比较好分割,我们只要把握住一点:免疫的,携带信息的无责任对象。那么对应的实体,就让我们现在比较迷惑,到底什么样的对象就应该做实体,到底什么样的实体应该做聚合根?现在的实体,从持久化层这个角度看,都是一个简单的POJO,尽管我们可能把某个对象置为实体,但是它就是作为一个可以持久化的POJO,对于我们关心的实体的特征:有标识的,有生命周期的业务对象。这个概念使得我们更加迷惑,还是不知道如何区分。希望各位高手给点建议。
3.Service的角色问题:
Service到底是用来做什么用的,根据Eric的观点,这个service应该是独立于实体,也就是那些不依附于任何对象(在此应该指实体对象)的方法的集合。既然我们的Entity都变成了POJO了,那么我们这个service就很容易把我们以前的思想(mvc结构中的action-service-dao分层模式)给抽出来了。所以,这个service又该如何界限呢?
4.所幸,我们还可以区分Factory和Repository,不多说了,但是鉴于上面的3个问题,可能这一部分也是存在问题的。
望各位兄台能给些许意见和建议。。。
小弟在此感激不尽!!!!!