锁定老帖子 主题:Spring带来了什么?OOD学而无用
精华帖 (0) :: 良好帖 (9) :: 新手帖 (19) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-04-12
我很欣赏spring。不然你这样的人那有机会从事软件开发。
|
|
返回顶楼 | |
发表时间:2013-04-12
gdpglc 写道 dwangel 写道 OOD跟用不用Spring是没啥关系,用spring实现OOD也很方便。
用spring而不用OOD也很常见。 就像 Linux之父对 C++的抱怨一样,如果用C++,一堆人中,只要有一两个 不恰当地使用,可能造成极大范围的破坏。 用spring创建模范性质框架,而不需要使用者去自己构想,其实更多的是软件工业和管理的做法, 减少犯错的几率, 跟编程技术追求无关。 有的人,你给他再好的技术条件,他也不会主动学习;有的人,环境再差也可能努力提高,追求更多的技术。 这个帖子其实,确实片面。 所在开发团队的不同,决定了实际的选择。 一两个OO编程思想的人,和很多只会做实际任务的人的团队,还是做一个通用性框架算了。 我说使用OOD,并不是指在局部用用似似而非的设计模式。 我是指从OOA的结果导出软件设计结果的方法。最终的结果应该是,有领域层的,业务逻缉和领域对象紧密结核。OOD以OOA的结果作为输入,进行设计建模,主要工作是找到需要的领域类,并给领域类分配职责。 如果你确切的明白我的意思。在spring中用不用OOD就不是团队的选择。这里有很大的风险。 在spring中应用OOD的主要困难是,OOD的结果,没办法在spring中表达。就是说,让领域对象充血。 没走过夜路的人,是不会走夜路的,那怕别人说那个路很快很好。 充血的问题,不必在这讨论。因为iteye中有很多的贴子了。 领域建模与充血模型,不可否认是完全采用OOA和OOD的理想化的开发模式。 但是这种开发模式如果用于非server side开发还可行,但在server side,会面临很多不一样的问题,比如性能。所以在Server Side比较特殊,要完全采用纯粹的OOA和OOD有难度。 另外,server side的开发还受制与特定的网络协议,比如Web项目就会受限于HTTP与HTML/JS,同样会影响到能否完全采用这种理想化的开发模式。再如SOA,那基本就是面向过程而非OO的开发思路。 因为这些原因导致无法全面OOA和OOD,而让Spring来做罪人,是找错目标了。 |
|
返回顶楼 | |
发表时间:2013-04-12
最后修改:2013-04-12
gdpglc 写道 我很欣赏spring。不然你这样的人那有机会从事软件开发。
呵呵,开始人身攻击了?是谁在回避技术? |
|
返回顶楼 | |
发表时间:2013-04-12
领域对象在Spring为什么不能充血;简单举个例子,你可以在context初始化的时候,为领域类注入静态的持久化实例;或者封装一层前台的参数或者VO,到领域对象的转换,在这个转换器里面引用Spring去构建领域模型;
和你不用任何框架去构建领域模型不是一样嘛,说到底Spring应对领域不够灵活的地方,就是JAVA不够灵活的地方; 你只能说Spring没有帮助你做了什么事情,但是也没有限制你。。。拜托不要说了半年就是一句 Spring就是贫血,除了搬一堆帖子一个例子都没有。 |
|
返回顶楼 | |
发表时间:2013-04-12
Shen.Yiyang 写道 领域对象在Spring为什么不能充血;简单举个例子,你可以在context初始化的时候,为领域类注入静态的持久化实例;或者封装一层前台的参数或者VO,到领域对象的转换,在这个转换器里面引用Spring去构建领域模型;
和你不用任何框架去构建领域模型不是一样嘛,说到底Spring应对领域不够灵活的地方,就是JAVA不够灵活的地方; 你只能说Spring没有帮助你做了什么事情,但是也没有限制你。。。拜托不要说了半年就是一句 Spring就是贫血,除了搬一堆帖子一个例子都没有。 用aop充血也是可以地。 不过,因为绕过语法检查,反而会越来越乱。 |
|
返回顶楼 | |
发表时间:2013-04-12
我觉得有两种开发人员,一种是app developer,一种是api developer。用spring的属于前一种,开发spring的属于后一种。
|
|
返回顶楼 | |
发表时间:2013-04-12
dwangel 写道 Shen.Yiyang 写道 领域对象在Spring为什么不能充血;简单举个例子,你可以在context初始化的时候,为领域类注入静态的持久化实例;或者封装一层前台的参数或者VO,到领域对象的转换,在这个转换器里面引用Spring去构建领域模型;
和你不用任何框架去构建领域模型不是一样嘛,说到底Spring应对领域不够灵活的地方,就是JAVA不够灵活的地方; 你只能说Spring没有帮助你做了什么事情,但是也没有限制你。。。拜托不要说了半年就是一句 Spring就是贫血,除了搬一堆帖子一个例子都没有。 用aop充血也是可以地。 不过,因为绕过语法检查,反而会越来越乱。 AOP用起来确实非常乱,现在有些用法是用领域模型完成业务逻辑,AOP织入持久化,异常处理这些东西;但是AOP本身不能保证开发人员超出这些范畴,把业务逻辑也丢到切面去搞得到处都是。 说回领域模型和Spring,当没有任何框架来实现领域模型的时候,不是也要自己写一大堆代码去构建领域,确保完整性和注入依赖的实现。如果你用代码可以构建聚合根,为什么Spring不可以,只不过Spring确实没有给这个过程太大的帮助。 |
|
返回顶楼 | |
发表时间:2013-04-12
elgs 写道 我觉得有两种开发人员,一种是app developer,一种是api developer。用spring的属于前一种,开发spring的属于后一种。
错了,利用spring也可以开发api地。 |
|
返回顶楼 | |
发表时间:2013-04-12
最后修改:2013-04-13
Shen.Yiyang 写道 领域对象在Spring为什么不能充血;简单举个例子,你可以在context初始化的时候,为领域类注入静态的持久化实例;或者封装一层前台的参数或者VO,到领域对象的转换,在这个转换器里面引用Spring去构建领域模型;
和你不用任何框架去构建领域模型不是一样嘛,说到底Spring应对领域不够灵活的地方,就是JAVA不够灵活的地方; 你只能说Spring没有帮助你做了什么事情,但是也没有限制你。。。拜托不要说了半年就是一句 Spring就是贫血,除了搬一堆帖子一个例子都没有。 为领域类注入静态的持久化实例。 看不懂? 如果是基于数据库的应用,不用任何框架,构造领域模型是很困难的,要弄懂什么是领域模型,处理领域模型的持久化问题,这都不是拍一下脑门能解决的。在这种情况下需要的是创造性的设计,这时OOD的技能很重要。但相对于Spring来说这么做:高风险低回报。 因为:spring粘合了各种框架,可以很方便的采用过程化的业务逻缉表达方式实现软件。正因为spring可以替代前者,所以说OOD的知识就不重要了。 你自已都说spring对于OOD没有帮助。那还为什么硬要在spring上构建领域模型呢,这时它的过程化支持到会对你的设计带来限制。 spring提供了替代OOD的过程化解决方案。一方面是自行构建领域模型困难重重;一方面是简单易用的spring过程模型。这是问题的实质。 没人说Spring不好。我正是在说它好。我的确很欣赏spring。它大大降低了软件的开发难度。 我只想说明,用spring的web项目是用不上OOD的理论知识的。 贫血的例子还用举吗? |
|
返回顶楼 | |
发表时间:2013-04-12
最后修改:2013-04-13
Shen.Yiyang 写道 现在有些用法是用领域模型完成业务逻辑,AOP织入持久化,异常处理这些东西;但是AOP本身不能保证开发人员超出这些范畴,把业务逻辑也丢到切面去搞得到处都是。 说回领域模型和Spring,当没有任何框架来实现领域模型的时候,不是也要自己写一大堆代码去构建领域,确保完整性和注入依赖的实现。如果你用代码可以构建聚合根,为什么Spring不可以,只不过Spring确实没有给这个过程太大的帮助。 AOP怎么织入持久化? 第二段话还是看不懂。 构建领域 和 确保完整性 和 注入依赖 是什么关系? 你的意思难到是,领域对象可以通过Spring容器创建和注入依赖关系? 用spring 通常就是 action service dao, 你到底要怎么用spring? |
|
返回顶楼 | |