企业架构模式
1 领域逻辑模式,即业务逻辑模式
领域逻辑模式可分为:事务脚本模式、领域模型、表模块。
模式分别对应不同的应用场景,当业务逻辑简单,只是简单的增删改查的时候,一般是采用事务脚本模式,因为容易理解,使用面向过程的方式编码,可以在一个地方看到完整的逻辑;
事务脚本模型介绍http://blog.chinaitlab.com/blog-6585415-721734.html
http://www.cnblogs.com/ljzforever/archive/2010/12/16/1908068.html
但是当业务逻辑复杂之后,采用这种方式就不好维护了,因为会充斥着大量的if else,分支逻辑。遇到这种情况,最佳的方式是采用领域模型,领域对象不仅有数据,也有行为,采用继承、多态等面向对象的技术来建模,把众多的if else拆分到不同的对象中,方便添加新的行为。
还有一种是表模块模式,以数据库表为中心,为每张表建立一个对象。有点类似于dao的做法,表模块也是没有体现面向对象技术的方式,和事务脚本模式有着同样的弱点;他和领域模型的区别是,领域模型一般一个对象实例对应表中的一行记录,而表模块是一个对象对应一个表,这个表里面不同记录的操作都通过这个对象来完成,通过主键来区别对象。
?
2 DDD 领域驱动开发
领域即业务,当业务变得复杂时,面向过程的编码模式会遇到维护性的噩梦。面向过程的设计会导致业务模型到代码实现的映射变得复杂,扭曲,甚至割裂。而领域模型驱动,强调面向对象的建模方式,把业务模型直接映射成对象,软件直接是领域的映射,具备了强大的代码复用性和可维护性。
实战例子
http://www.infoq.com/cn/articles/ddd-in-practice
?
3 领域建模
一般是把需求场景中的名词映射成系统中的类(即领域对象),类不仅包含数据,也包含行为。当一些操作,很难断定处于哪个对象的时候,需要抽象出一个无状态的服务类来提供这些行为接口。
领域对象一般不包含数据库持久化逻辑,因此数据持久化逻辑,和检索逻辑应该由DAO层来实现。
?