最近评论
正在载入评论列表...
![]() |
![]() |
4.5 从模型生成视图
通过在浏览器端引入MVC,我们得到了3个需要关注的不同子系统。分离关注点可以得到更加清晰的代码,但是也可能得到大量的代码。对于设计模式的常见批评是,它们会将甚至是最简单的工作变成一个棘手的过程(EJB开发者对此深有体会)。
多层应用的设计经常导致在几个层之间重复信息。我们知道DRY代码的重要性,解决这种重复的通常方法是在一处定义必需的信息,然后从这个定义自动生成不同的层。本节采用这种方法,介绍一种可以简化MVC实现的技术,将所有3层以一种简单的方式融合起来。特别地,我们将目标定在视图层上。
到目前为止,我们已经通过手工编码的方式考察了表现底层模型的视图。这使得我们可以很灵活地确定用户将能看到什么,但是有些时候,我们并不需要这种灵活性,手工为UI编码会变成一件冗长和重复的工作。一种替代方法是从底层的模型自动生成用户界面,或者至少自动生成用户界面的一部分。做这件事情有一些先例,例如Smalltalk语言环境和Java/.NET Naked Objects框架(参见“资源”一节),JavaScript非常适合完成这类任务。让我们看看JavaScript反射在这件事情上可以做些什么,并且开发一个通用的Object Browser组件,它可以用来作为任何JavaScript对象的视图。