接着上月对会话作用域的介绍,企业Java 专家 Kyle Gabhart 深入研究了 JSP 隐式对象的多种用法。接下来,他将介绍 9 个隐式对象,解释每个对象的用途(或者多种用途),最后给出一些怎样在JSP 编程中使用这些便利工具的最佳实践。您可以到我们的 讨论论坛中分享您对这篇文章或者 J2EE 探索者系列中的任何其他文章的想法。
design patterns
J2EE 探索者: 创建和管理有状态 Web 应用程序
在创建有状态应用程序时,数据管理是关键。为了智能地管理用户数据,必须将其置于上下文中,这可以通过作用域(scope)来做到。在本期的J2EE 探索者 中,Java 开发者和顾问 Kyle Gabhart对用于有状态 Web 应用程序开发的 4 种会话作用域的适当处理给予了关注。您可以在本文给出的 论坛中共享您对本文或者 J2EE 探索者系列中任何文章的看法。
追求代码质量: 谨防紧密耦合!
我们知道紧密耦合的代码不是个好现象,因此要在设计中尽量避免它 —— 但问题是如何才能避免紧密耦合呢。这个月,我们将学习如何识别一个系统是否有紧密耦合的问题,然后使用依赖性倒置原则解开这种紧密耦合。
Java 建模: UML 工作簿,第 4 部分
在短时间的中断之后,Granville Miller 重开了 UML 工作簿,深入讨论用例图的基本组件之一:参与者(actor)。参与者不仅在 UML 建模中不可或缺,而且在创建 Java 应用程序时,它也能起到很重要的作用,甚至可以就 J2EE 应用程序设计中的模式提出建议。对于开发诸如 Web 服务(在其系统设计中,外部交互扮演了很重要的角色)这样的复杂系统,参与者变得尤其重要。Granville 用序列图和类图来阐述参与者在用例图的绘制和 Java 应用程序开发中的角色。请跟随他学习。
架构性宣言: MIDP 2.0 中的工厂设计模式
这个月将学习有关 MIDP 2.0 的更多知识,同 Mikko 一起观察 Mobile Information Device Profile (MIDP) 的通用连接器框架 —— 工厂设计模式。
Java 技术: 使您轻松地进行多线程应用程序编程
生产者-消费者方案是多线程应用程序开发中最常用的构造之一 ― 因此困难也在于此。因为在一个应用程序中可以多次重复生产者-消费者行为,其代码也可以如此。软件开发人员 Ze‘ev Bubis 和 Saffi Hartal 创建了 Consumer 类,该类通过在一些多线程应用程序中促进代码重用以及简化代码调试和维护来解决这个问题。请通过单击本文顶部或底部的讨论来参与本文的论坛,与作者和其他读者分享您的想法。
使用 JSF 架构进行设计
本文中,作者 Anand Joshi 使用 JSF 框架中的设计模式阐释了 JavaServer Faces (JSF) 体系结构。他讨论了 JSF 体系结构中使用的 GoF 设计模式,以及这些模式在 JSF 框架中的作用。任何对设计模式和 JSF 体系结构有一定了解的人都能从 Anand 详细的介绍中有所收获。*读者应该对 GoF 设计模式和 JSF 技术有很好的了解。
CORBA 连接: CORBA 3.0 的 IDL
“对象管理组织(OMG)”的“接口定义语言”已经能使开发人员根据继承创建对象关系。然而,当处理复杂设计时,经常需要支持包含多个接口的对象,并且这些对象是通过组合而不是通过继承来构造的。本周,Dave Bartlett 通过扩展“组件实现定义语言”与标准化定义组件接口的方式,解释了“CORBA 组件模型”如何实现这种需要。
AOP@Work: 设计切入点来避免模式密集
在“JUnit: A Cook‘s Tour”一文中,作者 Erich Gamma 和 Kent Beck 讨论了 JUnit 的设计。他们指出,与很多成熟框架中的关键抽象一样,TestCase 也有很高的模式密集,易于使用而难以修改。在 AOP@Work 系列的第四期文章中,Wes Isberg 重温了 Cook‘s Tour,说明如何通过使用 AOP 切入点设计来代替面向对象设计,在一定程度上避免导致成熟的设计难以修改的模式密集。
Ajax 和 XML: 五种 Ajax 反模式
通过理解错误的编码方式,可以更好地了解如何正确地进行编码。当然,编写 Asynchronous JavaScript + XML(Ajax)应用程序有正确的方法,也有错误的方法。本文将讨论一些需要避免的常见编码实践。