大家回答得挺好,从各个方面说明业务层Service必要性。
我想从DDD(Domain-Driven Design)观点来补充说明楼主这个层次得必要性。
按照DDD领域建模观点看,中间业务层还应该再分为应用层和领域层(具体文章见http://domaindrivendesign.org)。
楼主的Service属于应用层,Domain则属于领域层。
在DDD观点看来,领域模型Domain其实分为三种元素:实体Enity、值对象(Value Object)和服务(Service)。
模型对象分实体和值对象,其实就是实体对象和对象状态的区分,值对象表示对象状态,在我设计JiveJdon3中,有ForumState和ForumThreadState,其实它们就是值对象,对象状态非常重要,它和对象生命周期scope有密切关系,最近出了一个Scopes开源免费框架就是专门提供对象生命周期管理的,所以,作为一个业务层框架必须有提供生命周期管理功能。
状态对象:数据库的替代者
服务是一些行为功能,有人指出没有行为的模型只有getter/setter
,是不是贫血模型,或者叫失血模型,DDD专家Eric Evans认为:将领域需要的功能强加给实体和值对象,不仅会破坏模型中对象定义,而且会认为地添加毫无意义的对象,