英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料
外文翻译
题 目 Core J2EE Patterns: Best Practices and Design Strategies
第一章. 导论
本章主题:
bull; 什么是J2EE?
bull; 什么是模式?
bull; J2EE模式目录
bull; 模式、框架和重用
近几年来企业软件发展的图景已经有了翻天覆地的变化。在变化的最中心是Java2企业版平台(J2EE),J2EE为分布式开发的、针对服务器的应用提供了统一标准的平台。对J2EE那具有战略性和能用性的功能的广泛采用提供给开发社区一种开放的标准,依据该标准可以为企业建立基于服务的架构。
但同时,“学习J2EE技术”被经常和“学习用J2EE技术进行设计”混为一谈。已有的许多与Java有关的书都对技术的特定领域做了出色的解释,但并不总是能讲清楚如何应用它。
J2EE架构师需要明白的不只是相关的API。他们还应该知道:
bull; 什么是最好的实践?
bull; 什么是不好的实践?
bull; 有哪些常出现的常见问题和这些问题的验证结果?
bull; 怎么样将不佳方案或不佳实践中的代码重构,成为专家描述成“模式”的更优解?
这正是本书所探讨的问题。好的设计是从经验中磨砺而出的。当这些设计被当作使用了标准模板的范例来讨论时,它们会变成强有力的、用于沟通和重用的机制,并且我们设计和构建软件的方法也会有很大改进。
什么是J2EE?
J2EE是一个用于分布式开发企业软件应用的平台。自从Java语言诞生起,它就被广泛接纳且经历了巨大的成长。越来越多的技术都成为了Java平台的一部分,新的API和标准也因适应不同需要而被开发出来。
最终,Sun公司和其他业界领头人以开放Java社区组织的名义,将所有的企业开发相关的标准和API整合起来,成为了J2EE平台。
J2EE平台为企业提供了许多好处:
·J2EE为企业运算需要的领域构建了标准,这些领域包括数据库连接、企业业务组件、面向消息的中间件、Web相关组件、通信协议以及互操作性等。
·J2EE促成了基于开放标准的最佳成果,保护了技术投资。
·J2EE提供了构建软件组件的标准平台,使这些软件组件能在不同厂商的产品中互相移植,避免厂商锁定。
·J2EE缩短了产品投入市场的时间,这是因为系统的架构和基础部分已经被厂商根据J2EE规范标准提供好了。IT企业现在可以不开发中间件,而是全神贯注在构建自己商业的应用上。
·J2EE提高了程序员的生产力,因为Java程序员可以轻松学会基于Java语言的J2EE技术。所有企业软件的开发都可以在J2EE平台上、使用Java语言作为编程语言而实现。
·J2EE增进了先有的异构系统之间的互操作性。
我们在第二章讨论J2EE平台的更多细节,所以请看第二章来了解更多信息。现在我们将对模式进行一个简单阐述,关于它们的历史和模式在第三章J2EE模式目录中所讲述的类型。
什么是模式?
历史上的模式
在20世纪70年代,Christopher Alexander [Alex, Alex2]写了许多记录土木工程学和建筑学中的模式的书籍。软件开发社区随后继承了他的作品中模式的概念,当然,软件开发社区早就出现了对类似想法的兴趣。
软件开发中的模式通过《设计模式:可重用面向对象软件的基础》一书得以普及,该书的作者是Erich Gamma,Richard Helm,Ralph Johnson,和John Vlissides(也被称作“四人组”,GoF)。当然,虽然四人组的工作使模式成为了在世界范围内的软件开发团队中广泛讨论的话题,但记住最重要的一点:他们所描述的模式并不是他们自己发明的。相反,再大量项目的设计中被反复认知到,他们才总结并记录在书中。
自四人组的书出版后,许多软件模式著作相继面世,且涉及了不同的领域和用途。在本书最后的参考目录中,我们提供了一个参考书单,并且鼓励大家探讨本书没有描述的其他种种模式。
模式的定义
模式是用来讨论问题和解决方案的。简单来说,模式让我们能够记录一个已知的反复出现的问题和在特定的上下文中的它的解决方案,并且让我们得以和别人讨论这些内容。“反复出现”是前文的一个关键词因为模式的目的就是鼓励反复概念重用。
我们在第六章《什么是一个模式?》中做了更详细的解释。
这里我们考察了一些著名的模式定义,这个定义由Christopher Alexander在《模式语言》[Alex2]中首次提到:
“每个模式都是由三部分组成的规则,它表现的是一种特定的上下文、一个问题和一个解决方案之间的关系。”
—Christopher Alexander
之后Alexander进一步扩展了他的定义,著名的模式专家Richard Gabriel[Gabriel]更加细节化地讨论了这个定义[Hillside2]。Gabriel提供了适用于软件开发的、他自己的版本:
“每个模式都是由三部分组成的规则,它表现的是一种特定的上下文,一个特定的、在该上下文中反复出现的约束系统,和一个允许约束自己解决自己的三者之间的关系。”
—Richard Gabriel
这个定义看起来很严格,不过还有更宽松的定义。例如,Martin Fowler在《模式分析》[Fowler2]中给出如下定义:
“一个模式就是在一个实际上下文中有用、或许在其他上下文中也有用的想法”
—Martin Fowler
正如你所见,模式有许多定义,但所有的这些定义都有一个共同的主题,这个主题就是在一个特定上下文中反复出现的一个问题/解决方案的组合。
模式有一些共同特征:
·模式是通过经验观察出的。
·模式用一种结构模式来专门记录(详见后文“模式模板”)
·模式能避免毫无创意做无用功
·模式存在于不同的抽象层次上
·模式经历不断的改进
·模式是可重用的工件
·模式可以交流设计和最佳实践
·模式可以拼合起来,用来解决一个大型问题。
许多聪明人都花过很多时间来常识定义和改善软件开发模式的概念。毫无疑问,我们不算那么聪慧,我们也不希望花费时间来扩展这些讨论。相反,我们对这些形形色色的定义取其精华,专注于每个最简单和反复出现的主题。
模式的分类
那么,模式表现的是专家对于一个上下文中反复出现的问题的解决方案,并且因此在许多抽象层次和大量业务中都会发现模式。对软件模式的大量分类被提出,最常见的如下:
·设计模式
·架构模式
·分析模式
·创建型模式
·结构型模式
·行为型模式
即使是这样简短的分类列表,我们依然可以看到大量的抽象层次和正交的分类模型。因此,即便人们已经提出了许多不同的分类方法,但没有哪一个是唯一正确的记录这些想法的方式。
我们在分类中提及的模式被简单地称作J2EE模式。每个模式在某些方面既可以是设计模式也可以是架构模式,而每个模式的策略方面会考察抽象层次较低的不分。我们唯一介绍的方法是将每个模式依照逻辑架构层次分为三类:
·表现层
·业务层
·集成层
在这个模式分类进化到某一步时,也许模式分类会成长到必须用比现在更复杂的分类。但是现在,我们更倾向于保持一切都这样简明,没有必要就不引入新的概念。
J2EE模式分类
模式的分类
本书中描述的J2EE模式基于我们在世界范围内的Sun公司Java中心的客户们在J2EE平台上的工作中所积累的经验。作为Sun公司专业服务机构一部分的Sun公司Java中心,是一家咨询机构,专注于为客户建立基于Java技术的解决方案。自从J2EE平台建立起我们就已经为其创建了解决方案,且致力于达成高质量服务目标,例如可扩展性、可用性和性能。
在早些的日子里,当我们在J2EE平台上设计、开发和实现不同的系统时,我们就开始用不正规的方式记录我们的经验了,而这些方式大多数是设计考虑、想法和笔记。随着知识基础的增长,意识到一种对于稍微更正规的记录方式来固化和交流这类知识的需要。我们改用模式来记录这些想法,因为模式对于想要把重复出现的问题和解决方案的知识记录并用于交流的功用来说,是最理想最合适的一种形式。
这项任务的第一步是辨别出模式应该被记录下来的抽象层次。一些问题和解决方式与另一些会发生重叠,因为问题的核心是相同的,但解决方案的实现方式会有差异。为了体现这种重叠,我们必须考虑考虑抽象层次的问题和定义每个模式的粒度的问题。正如你在这个J2EE模式分类目录将看到的那样,我们最终确定了一个抽象层次,这个抽象层次介于设计模式和架构模式之间。和特定解决方案相关的细节在我们的模式模板中被放在了策略部分(看“模式模板”一节),这些解决方案用于实现低层次的抽象层次。
每个模式都要多次被命名和重命名。而且,根据社区的反馈来看,每个模式都要多次被重写。不用说,就像所有的模式一样,这些模式都出于持续的改进之中,并且将随着技术和规范的变化继续改进。
目前J2EE模式目录中包括15个模式,并且被分别放入三个章节:第七章“表现层模式”,第八章“业务层模式”,第九章“集成层模式”。每个模式都是按照我们的模式模板记录的。
表1-1 J2EE模式目录中的模式
层 |
模式名称 |
表现层 |
拦截过滤器 前端控制器 视图助手 复合视图 服务到工作者 分配者视图 |
业务层 |
业务代表 值对象 会话门面 复合实体 值对象装配器 值列表处理器 服务定位器 |
集成层 |
数据访问对象 服务激活器 |
怎样使用J2EE模式目录?
当我们使用任一类模式时都会遇到这样的挑战:如何在组合中最好地利用模式?正如Christopher Alexander在他的书《模式语言》[Alex2]中所说:
“简而言之,没有哪个模式是孤立的实体。每个模式都只有靠与其他模式相互支持才能存在于世界上:也就是说其嵌入的模式更大,且其被同样大小的模式包围时,还有更小的模式嵌入其中。”
—Christopher Alexander
J2EE模式目录中的模式也不出意外地适用这条规律。在第六章“J2EE模式概览”中介绍的模式关系图,描述了目录中的模式是如何相互支持的。第六章也给出了一张J2EE模式目录的路线图,用一张表来表示,列举了J2EE涉及和架构相关的问题,并且与特定的模式或重构关联起来,通过这些给出了问题的解决方案。为了从使用这些模式中获得最大收益,我们建议你充分理解模式关系和模式路线图。
当你仔细研习每个模式时,你会看到模式内部还会嵌入模式和策略,并且它会嵌入更大的模式中,同时支持着其他模式。有时候,模式是建立在其他J2EE模式目录或其他在注明文献中描述的模式之上的,这些著作例如:《设计模式:可重用面向对象软件的基础》[GoF],或《软件架构模式》系列著作[POSA1,POSA2]。
为了帮你进一步理解模式、它们的相互关系以及模式的选取和应用,我们在本书的第二部分提供了一些辅助章节。
在本书的第二部分中,我们列举了J2EE平台的不佳实践和重构。每个在章节中列举的不佳实践,我们提供了相关的重构或模式以提供缓解这些不佳实践创造的问题的解决方案。在第五章“J2EE重构”,我们介绍了能够逐步将不太理想的解决方案提升至理想的重构。在每种重构的做法部分,也列出了相关模式和会对该重构产生影响的设计考虑。
最后,在尾声“J2EE模式应用”中,我们讨论了一个基于J2EE的应用的例子。我们展示了一些有用的案例来示范这些模式怎么和工作结合起来实现一个有用的案例。
使用模式的益处 剩余内容已隐藏,支付完成后下载完整资料
资料编号:[22622],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。