演化架构和紧急设计:利用可重用代码,第1部分 - 代码与设计之间的关系 - 编程入门网
erKey());
}
});
}
以框架作为模式集合 如果您熟悉 Hibernate,那么您将注意到,wrapInTransaction() 方法很像 Hibernate 的 doInTransaction helper。最成功的框架包含的是一组符合实际的技术惯用模式。框架中模式的有用性密 切关系到框架如何得以生存。如果框架是从实用代码中提取的,那么其中的模式更多地关注现实中的问题 。良好的框架(例如 Hibernate、Spring 和 Ruby on Rails)大多经历了实际应用的严峻考验。 另一方面,如果一个框架是在象牙塔中创建的,很多模式听起来很好,但是在实际项目中却没那么有 用。我常提到的一个揣测性框架开发的例子是 JavaServer Faces(JSF)的定制呈现管道 “特性”。它 允许输出各种类型的输出格式(例如 HTML、XHTML 和 WML)。我还没遇到过需要这个特性的开发人员( 虽然我相信存在这样的开发人员),但是您在编写的每个 JSF 应用程序中都为此付出了一点代价。(它 增加了理解事件模型和管道的复杂性。) 在这个版本中,我使用 Gang of Four 的 Command 设计模式,将样板代码抽象到 wrapInTransaction() 方法。addOrderFrom() 方法现在可读性强多了 — 该方法的精华(最深处的两行 )现在更明显了。但是,为了达到那种程度的抽象,Java 语言附加了很多技术性的繁琐的东西。您必须 理解匿名内联类是如何工作的(Command 子类的内联声明),并理解 execute() 方法的含义。例如,在 匿名内联类的主体中,只能调用外部类中的 final 对象引用。 演化架构和紧急设计:利用可重用代码,第1部分 - 代码与设计之间的关系(4)时间:2011-08-18 IBM Neal Ford如果用表达性更强的 Java 方言来编写同样的代码,结果会怎样?清单 3 显示用 Groovy 重新编写的 同一个方法: 清单 3. 用 Groovy 重新编写的 addOrderFrom() 方法
该代码(特别是 addOrderFrom() 方法)的可读性更强。Groovy 语言包括 Command 设计模式; Groovy 中任何以花括号 — { } — 括起来的代码自动成为一个代码块,可通过将左、右圆括号放在存放 代码块引用的变量之后执行。这个内置模式使 addOrderFrom() 方法的主体可具有更强的表达性(通过减 少晦涩的代码)。Groovy 还允许消除围绕参数的一些括号,从而减少干扰。 清单 4 显示一个类似的重写版本,这一次用的是 Ruby(通过 JRuby): 清单 4. 翻译成 Ruby 的 addOrderFrom() 方法
与 Java 版本相比,上述代码更类似于 Groovy 代码。Groovy 代码与 Ruby 代码的主要不同点在 Command 模式特征中。在 Ruby 中,任何方法都可以使用代码块,代码块通过方法主体中的 yield 调用 执行。因此,在 Ruby |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |