概述
表示层(Presentation Layer)的设计可以给系统客户最直接的体验和最十足的信心。正如人与人的相交相识一样,初次见面的感觉总是永难忘怀的。一件交付给客户使用的产品,如果在用户界面(User Interface,UI)上缺乏吸引人的特色,界面不友好,操作不够体贴,即使这件产品性能非常优异,架构设计合理,业务逻辑都满足了客户的需求,却仍然难以讨得客户的欢心。俗语云:“佛要金装,人要衣装”,特别是对于Web应用程序而言,Web网页就好比人的衣装,代表着整个系统的身份与脸面,是招徕“顾客”的最大卖点。
“献丑不如藏拙”,作为艺术细胞缺乏的我,并不打算在用户界面的美术设计上大做文章,是以本书略过不提。本章所关注的表示层设计,还是以架构设计的角度,阐述在表示层设计中对模式的应用,ASP.NET控件的设计与运用,同时还包括了对ASP.NET 2.0新特色的介绍。
MVC模式
表示层设计中最重要的模式是MVC(Model-View-Controller,即模型-视图-控制器)模式。MVC模式最早是由SmallTalk语言研究团提出的,被广泛应用在用户交互应用程序中。Controller根据用户请求(Response)修改Model的属性,此时Event(事件)被触发,所有依赖于Model的View对象会自动更新,并基于Model对象产生一个响应(Response)信息,返回给Controller。
如果将MVC模式拆解为三个独立的部分:Model、View、Controller,我们可以通过GOF设计模式来实现和管理它们之间的关系。在体系架构设计中,业务逻辑层的领域对象以及数据访问层的数据值对象都属于MVC模式的Model对象。如果要管理Model与View之间的关系,可以利用Observer模式,View作为观察者,一旦Model的属性值发生变化,就会通知View基于Model的值进行更新。而Controller作为控制用户请求/响应的对象,则可以利用Mediator模式,专门负责请求/响应任务之间的调节。而对于View本身,在面向组件设计思想的基础上,我们通常将它设计为组件或者控件,这些组件或者控件根据自身特性的不同,共同组成一种类似于递归组合的对象结构,因而我们可以利用Composite模式来设计View对象。
然而在.NET平台下,我们并不需要自己去实现MVC模式。对于View对象而言,ASP.NET已经提供了常用的Web控件,我们也可以通过继承System.Web.UI.UserControl,自定义用户控件,并利用ASPX页面组合Web控件来实现视图。ASP.NET定义了System.Web.UI.Page类,它相当于MVC模式的Controller对象,可以处理用户的请求。由于利用了codebehind技术,使得用户界面的显示与UI实现逻辑完全分离,也即是说,View对象与Controller对象成为相对独立的两部分,从而有利于代码的重用性。比较ASP而言,这种编程方式更符合开发人员的编程习惯,同时有利于开发人员与UI设计人员的分工与协作。至于Model对象,则为业务逻辑层的领域对象。此外,.NET平台通过ADO.NET提供了DataSet对象,便于与Web控件的数据源绑定。
相比前几章所讨论的业务逻辑层与数据访问层,表示层更复杂,同时牵涉开发与设计两种不同的技术领域。开发人员必须负责将业务逻辑层与表示层连接起来,让用户的要求可以从表示层经由业务逻辑层传递到数据访问层,同样,数据访问层从服务器取得的响应内容,经由业务逻辑层传递到表示层展示。设计人员则负责表示层网页的版面配置,决定表示层所要呈现的可视化内容与用户的操作接口。
ASP.NET 从1.0发展到1.1,已终具备了相当出色的开发功能,但是要将网页可视化接口这一部分实现还有很多的工作要做。通常一个开发人员必须将开发好的网站架构交至网页设计人员的手中,才能完成整个网站的设计。ASP.NET 2.0在这一部分有了非常大的进步,主版页面设计与导航条控件的导入,让开发人员可以不用依赖网页设计人员,便可以将表示层网页的雏形设计完成。当然,术业有专攻,纯粹的可视化设计部分还是必须由设计人员进行处理,然而ASP.NET在网页版面配置的实现上提供了足够的支持,可以让我们快速地完成表示层的基础架构。
本章接下来将针对几个表示层的重要部分进行说明,从建立网站整体页面架构的主版页开始,逐步探讨构成页面功能的各种导航控件,最后你会看到我们如何将完成版面配置的网页连接到业务逻辑层,完成网站的设计。
最后
以上就是无奈萝莉为你收集整理的Java job interview:项目开发小组成员网站表示层设计的全部内容,希望文章能够帮你解决Java job interview:项目开发小组成员网站表示层设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复