事务脚本-领域模型
Martin Fowler定义是:
事务脚本,将所有逻辑组织在一个单一过程,进行数据库直接调用,每个业务请求都有自己的事务脚本,并且是一个类的公开方法。
领域模型,是一系列相互关联的对象,每个对象代表一定意义的独立体,既可以一起以一种大规模方式协作;也可以小到以单线方式运行。
事务脚本总体来说:就像直奔主题,平铺直叙,就功能谈功能,直接没有回旋余地;领域模型给人感觉好像肚子里就那么点货而领域模型则象是文人骚客,上了一个档次,会使用美妙表达方式,有余地。 比如唐诗:清明时节雨纷纷,路上行人欲断魂;借问酒家何处有,牧童遥指杏花村;这是领域模型描述方式,如果采取事务脚本方式就是:清明我很伤心,伤心要喝酒。
事务脚本同样用类,却并不是真正的面像对象:很多人也在用类,也在使用模式,但是他们的思维一样是面向过程的,因为他们的世界中除了过程就不存在任何东西了,它们俩如何来区分呢?其实还是面向过程与面向对象的分别:
事务脚本:围绕功能,以功能为中心。
领域模型:描述领域类,以类之间的协作完成所需功能。
以上引用:http://www.jdon.com/34056 领域模型VS事务脚本
我理解的事物脚本与领域模型的区别是,类是死的还是活的。
事物脚本模式本质还是面向过程编程,尽管定义了很多类来将分层业务逻辑,但是定义的类是死的,机械的,就好比机器人,没有自己的状态,就是为了功能而生,固定的输入进去,固定的输出出来。
领域驱动模式本质是一些类协同工作,是面向对象编程,就好比活生生的人,有自己的状态,行为,一群人相互协同工作。
如果项目太小,两者不好区分,比如,功能太简单:送快递,让机器人,还是活生生的人完成这个业务,结果都是相同的,所以功能的复杂度太
小,两者没有太大的区别。
事物脚本虽是面向过程编程,但是略带有面向对象色彩,就像机器人,还是太机械死板,缺少了一种作为人的鲜活感。
领域驱动虽是面向对象编程,但是其实还是有过程的(任何逻辑都是有过程的),但是这时不在以过程为主,增强了对象的主观性,就感觉是工作不在是为了完成事业赢得巨大成就,而是为了满足人类的幸福感责任感。
事物脚本:
领域模型: