`

再炒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
分享到:
评论

相关推荐

    json java读取 formbean操作

    本话题将围绕如何在Java中使用这些库来读取JSON数据并进行FormBean的操作进行详细讲解。 首先,我们需要理解FormBean的概念。FormBean是Java Web开发中的一个术语,通常用于封装HTML表单提交的数据,以便在服务器端...

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

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

    结合struts和hibernate谈J2EE架构的数据表示.doc

    因为FormBean的设计应紧密贴合页面逻辑,而PO则应与数据库表结构保持一致。例如,在用户注册场景中,FormBean可能只包含基本的个人信息,而PO可能会包含更丰富的关联属性,如权限、用户组等。 接下来是业务层,这一...

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

    在这个例子中,我们将深入探讨如何在Struts1.2中实现动态FormBean并添加验证功能。 首先,让我们理解什么是动态FormBean。在传统的Struts1应用中,每个ActionForm Bean都是一个Java类,它对应于HTML表单的字段,并...

    动态验证formbean

    在Java Web开发中,动态验证FormBean是一种常见的实践,它允许开发者在运行时根据不同的业务需求灵活地定义和改变表单验证规则。本教程将深入探讨动态验证FormBean的概念、优势以及实现方法。 动态验证FormBean的...

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

    FormBean是Struts中的一个重要概念,它充当了模型层与视图层之间的桥梁,用于存储用户的输入数据。本篇文章将深入探讨在Struts中FormBean的日期类型字段如何进行赋值以及自动转化。 一、FormBean的概念与作用 ...

    java 经典面试题 于网络分享

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

    struts2 (对象.属性)注入

    此外,这种机制还为与其他框架(如Hibernate)的整合提供了便利,可以将Struts2的VO和Hibernate的PO(Persistent Object)进行整合,进一步提高代码的复用性和系统的整体性能。 综上所述,“对象.属性”注入是...

    Struts开发技术

    FormBean的数据可以通过多种方式传递到其他组件中,其中一种常用的方法是将FormBean的属性复制到DTO(Data Transfer Object)对象中。例如: ```java import org.apache.commons.beanutils.BeanUtils; // 将...

    struts入门

    <form-bean name="UserFormBean" type="cn.itcast.web.formbean.UserFormbean"/> <action path="/Register" type="cn.itcast.web.action.RegisterAction" name="UserFormBean"/> ``` 该配置文件定义了一...

    Struts 初级八步 CHM 图文教程.rar

    7. ** strut-config.xml配置详解**:深入解析配置文件的各个元素和属性,包括Action、ActionMapping、FormBean等。 8. **实战演练**:通过一个小型项目,如用户登录注册系统,实践上述知识,让初学者能够动手操作,...

    韩顺平老师所有视频下载种子,绝不骗人

    5. Struts视频教程:该教程讲解了Struts的基础知识和应用,包括Struts的架构、Action、FormBean等。 6. Spring视频教程:该教程讲解了Spring的基础知识和应用,包括Spring的IOC容器、AOP等。 Linux和Oracle教程 1....

    SSS框架详解

    2.配置文件(struts-config.xml):用于配置 Struts 框架的各个组件,例如 ActionMapping、FormBean 等。 3. ActionMapping 节点:用于配置请求映射关系,例如将请求映射到特定的业务逻辑对象。 4. RequestProcessor...

    java笔试面试题及答案.doc

    答案:构造函数具有以下特性:a) 名称与类名相同;b) 可以重载,即同一个类中可以有多个构造函数,它们的参数列表不同;c) 创建类的新对象时,会自动调用构造函数初始化对象。 3. 问题:关于异常处理机制的哪些...

    Struts快速学习指南

    2. **ActionForm**:用于封装用户从视图层提交的数据,与模型层交互,通常继承自Struts提供的FormBean类。 3. **Action**:实现了业务逻辑,接收并处理ActionForm中的数据,执行相应的操作,并返回一个表示结果的...

    Struts_config.xml详解

    Struts框架的核心配置文件`struts-config.xml`是整个应用的关键组成部分之一,它定义了应用程序中各个组件(如Action、FormBean等)的行为与交互方式。本文将详细介绍`struits-config.xml`中的关键配置项,并解释其...

    struts中数据在action与jsp中的传递总结.pdf

    Struts 中数据在 Action 与 JSP 中的传递总结 Struts 框架中,数据在 Action 与 JSP 之间的传递是一种常见的需求。为了实现这种传递,Struts 提供了多种方式,本文将对这些方式进行总结。 方式一:通过 FormBean ...

    字节流两种上传文件方法

    3. 在JSP页面上使用Struts2的file标签,指定对应的FormBean字段。 4. 配置Struts2的Interceptor(拦截器),如`params`和`paramsPrepareUpload`,确保文件数据被正确处理。 5. 在Action中读取并处理字节流,例如将其...

    JavaEE学习大纲.pdf

    3. 如果存在FormBean,Struts会自动将请求参数填充到FormBean对象中。 4. Action执行其`execute`方法,处理业务逻辑。 5. Action返回一个Forward,定义了页面跳转的方向。 6. 根据Forward,Struts将控制权交给相应的...

    struts中文手册

    4. **丰富的标签库**:Struts提供了一套与JSP EL和JSTL兼容的标签,简化了视图层的开发。 **Struts的局限性与演进:** 1. **性能问题**:由于每次请求都要经过Struts框架,可能会增加一定的响应时间。 2. **复杂性...

Global site tag (gtag.js) - Google Analytics