轻量级开发的成功秘诀,第 7 部分: Java 替代方案
2009-11-11 00:00:00 来源:WEB开发网清单 1 显示的是 Seaside 中购物车的 checkout 方法的一个例子。
清单 1.Seaside 中的 checkout 方法 go
| shipping billing creditCard |
cart _ WAStoreCart new.
self isolate:
[[self fillCart.
self confirmContentsOfCart]
whileFalse].
self isolate:
[shipping <- self getShippingAddress.
billing <- (self useAsBillingAddress: shipping)
ifFalse: [self getBillingAddress]
ifTrue: [shipping].
creditCard <- self getPaymentInfo.
self shipTo: shipping billTo: billing payWith: creditCard].
self displayConfirmation.
对您来说,这个 Smalltalk 代码可能看起来并不自然。妙处在于该方法调用向用户请求输入的任务。基于用户的反应,应用程序的流程发生改变。例如,如果您要询问一个单独的开单地址,就将得到另外的开单窗口。多页面的购物车结帐被减少到一个单页面的方法。
延续的管理在幕后悄悄进行。您不需要知道有关状态的任何东西。与此相比,通常的 Java 语言替代方案看起来是残酷的。每次处理一个请求的时候,您都需要决定保存哪些数据以及在哪里保存它。像 Cocoon 这样的框架模仿这种控制,但没有延续,它会更加困难,而且不能远程得到任何与 Seaside 的功能相似的东西。
元编程
元编程(Metaprogramming),即写程序的程序,是一个功能强大的概念。您已经看过 Java 语言的两个例子:
更多精彩
赞助商链接