`

再炒FormBean,VO,DTO,PO....贫血与充血

    博客分类:
  • J2EE
阅读更多
太多的地方讨论过这些东西了..
自从有了OO一说开始,O就变得满天飞啊.

看看牛人们的讨论
http://www.iteye.com/topic/627?page=1
http://www.iteye.com/topic/4233?page=1
http://www.iteye.com/topic/4173
http://www.jdon.com/article/23672.html
http://www.jdon.com/jivejdon/thread/34533.html


其实大家的讨论对分层结构都比较认同.
就是在哪个层的东西就应该封闭在那个层.不应该出现跨层的情况.
但这样,层次上是很清晰了,但就多了很多的重复,复制/粘贴.(平时我也是这样做的,但多了就比较烦啊..怀疑自己是不是太教条了.)而且这个违背了消除重复,保持清洁原则.
真的是鱼与熊掌不可兼得啊.

再看看这一篇:
http://www.jdon.com/jivejdon/thread/26395.html
好似banq与robbin的间接对话

贫血与充血

http://www.iteye.com/topic/11712?page=1
http://www.iteye.com/topic/191261
http://www.iteye.com/topic/16728
http://www.iteye.com/topic/180343
这个我认为尽量做到充血.不必去过多的细化.
引用
我们该贫血照贫血!他老人家信口开河了一把,现在自己都收不了这个场

引用
切分的原则是什么呢? Rod Johnson提出原则是“case by case”,可重用度高的,和domain object状态密切关联的放在Item中,可重用度低的,和domain object状态没有密切关联的放在ItemManager中。

这有点更接近于职责分配原则的味道.

再看看下面的图:(与大家批评的一杆子到底差不多)
左图是现在混乱的J2EE多层系统,右图使用Naked Object的后的模型



引用
实际上,不一定所有的系统都一定要使用Naked Object,而且Naked Object导致耦合性高,目前实验只适合在Swing界面端,在服务器端成功案例还没有出现。

这给我们一个启示,我们做一个J2EE系统时,一开始必须从中间层Domain Model开始,这就是域模型驱动,而不是被具体技术牵着鼻子走,各个层技术就象小孩子一样,闹腾厉害,如果你给他们每个人分一个果果(做一个数据模型),那么你整合起来时很难,所以,你必须只给他们一个Domain Model果果,以此设计为中心,再加入其他辅助对象,与Domain Model建立对象关联(通过类图实现的四种类关系),而各个技术都是围绕类图的类各自完成自己功能。

理清这个思路,从中间组件层入手,就能顺藤摸瓜,问题迎刃而解,这也是为什么组件层(有些人说是构件)如此重要,为什么要面向组件(面向构件)编程的重要性,为什么EJB和Spring等等吵得不可开交等原因。


引用
通过这张图我们可以看到,以前方式造成J2EE开发层次之间调用混乱,修改和拓展非常不方便,而在右边的DDD开发方式下,界面(边界)对象就是域对象就是持久化的实体BO,没有多余的Contorller或Action了。原来Domain层被服务层Service layer遮挡,在右图中,则Domain层直接暴露给前台了,所以Domain没有东西被遮盖,裸露了,称为Naked(裸露) Objects
  • 大小: 11.4 KB
2
0
分享到:
评论

相关推荐

    从零开始创建基于struts1.2 + Hibernate3.0的Web工程

    4.4. 添加formbean和actionbean .......................................11 4.5. 添加menu画面....................................................13 5. 调试工程..............................................

    json java读取 formbean操作

    NULL 博文链接:https://haixiami200411.iteye.com/blog/736554

    动态验证formbean

    介绍如何使用动态formbean的例子

    Struts1.2动态FormBean加验证功能的一个例子

    Struts1.2动态FormBean 加 验证功能 的一个例子

    java 经典面试题 于网络分享

    重写是父类与子类之间多态性的一种表现。 B. 重写是一个类中多态性的一种表现。 C. 重载是一个类中多态性的一种表现。 D. 重载是父类与子类之间多态性的一种表现。 6.在Struts应用的视图中包含哪些组件? A. JSP...

    struts2 (对象.属性)注入

    在struts2中已经不需要struts1中的formbean了。在struts1中每次提交表单的时候,表单中的属性值都...而这些对象都是vo的实现,如果使用hibernate,可以直接把struts2的vo和hibernate的po整合到一块,直接使用一个即可。

    jsp编写的网上书店

    public class addUserAction extends Action{ /** ... */ public ActionForward execute(ActionMapping mapping, ActionForm form, ...//删除formBean return mapping.findForward("addusersuccess"); }

    Struts中FormBean的日期类型字段赋值自动转化

    NULL 博文链接:https://zywang.iteye.com/blog/413003

    FormBeanUtil

    FormBeanUtil.rar 从javaeye拷贝下来,为aiaiya下载

    commons-beanutils-1.9.1解析javaBean方式

    Beanutils用了魔术般的反射技术,实现了很多夸张有用的功能,都是C/C++时代不敢想的。无论谁的项目,始终一天都会用得上它。我算是后知后觉了,第一回看到它的...4.5 动态Bean 见用DynaBean减除不必要的VO和FormBean

    Struts_config.xml详解

    >>> prefix=""// 指定填充当前 Action 关联 FormBean 时 ,要添加到请求参数名称的前缀,因此,如果请求参数名为 "username" 并且 prefix 属性被设置为 "search" , 则将对 FormBean 调用一个名为 ...

    struts1和struts2的区别

    不过,Struts1.x与Struts2的Action模型很大的区别。 Struts2和Struts1.x的差别,最明显的就是Struts2是一个pull-MVC架构。这是什么意思呢?从开发者角度看,就是说需要显示给用户的数据可以直接从Action中获取,而不...

    谈谈你对Struts的理解。

    我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。  一个扩展知识点:struts的...

    struts1&struts2

    2.Struts2和Struts1.x的... Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。 Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取。

    JAVA期末大作业课程设计基于SSH框架的管理系统.zip

    JAVA期末大作业课程设计基于SSH框架的管理系统。 基本原理 1. 相关技术 Structs 一、Structs1原理 ...控制器根据配置信息,对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给这个

    newxy(新坐标)web快速开发包

    3,数据库字符编码与本地字符编码转换; 4,文件上传,上传大小控制; 5,文件下载,下载记数; 6,图片显示; 7,数据分页显示; 8,客户端标记记录集哪条记录被选择; newxy(新坐标)技术网站:...

    Management-System-of-company:项目使用Servlet + mybatis构建的Web项目,目的是为了进一步熟悉mybatis的进一步配置,根据spring的内核编写了FormBean进行使用

    FormBean如下 public class FormBean { public static Object makeBean(HttpServletRequest request,Class<?> clazz){ Object result = null; try { result=clazz.newInstance(); Field [] fields ...

    Struts html:checkbox框初始默认是选中的解决方法

    在Struts中几种情况可以使标签初始就是选中的,Formbean里面该Property的值设为 1.on 、2.yes 、3.true 这三种情况都是可以实现默认选中的。 注:如果不选中,最好把Property的设置为””,因为在Action中得到...

    Struts原理、开发及项目实施

    比较快的一种建立方式为: 在C:\tomcat\webapps下新建目录test,再将C:\tomcat\webapps\struts-example下的 WEB-INF目录拷贝到test目录下,然后将test\WEB-INF下的src和classes目录清空,以及struts-...

Global site tag (gtag.js) - Google Analytics