对于一些中小型的web应用程序,为了缩短开发周期和降低开发和维护成本,往往会采用一种基本MVC开发模式的框架开发。现在市场上的开发传统web页面的JavaScript框架比较多,但是专门对移动应用程序的MVC设计模式的框架比较少。所以开发一套针对移动应用程序的MVC设计模式的框架还是很有价值的。参考传统MVC设计模式框架,移动应用框架应该实现以下几个方面:
MVC的分离
移动应用程序中,model,view,controller得到严格的分离,使得应用程序的结构和开发的思路更加清晰,程序的维护更加方便。
数据的更新
Model中的数据与View中数据的双向更新,当Model中的数据发生变化时,View中的数据随着发生变化,当View中输入或修改数据时,Model的数据也会发生变化,省去开发者手动 *** 作数据的变化,避免发生错误。
数据的格式化
当Model中的数据需要先格式化再显示在view中的时候,可以先进行数据格式的转化。
数据的验证
当view中输入数据或者是改变数据的时候,需要验证数据时,可以先对数据进行验证,当验证通过时,才赋给Model中相应的数据。
页面管理调度
实现各个页面之间的调度,避免由开发者实现页面调度而产生的混乱,同时也加快程序的开发速度。
框架的实现与程序的开发离不开JavaScript库,目前的Javascript库的形势也比较尴尬,一方面是传统的web页面javascript库的成熟,一方面却是针对移动端应用设计开发web应用JavaScript的相对落后,虽然也有几款优秀的,但是相对体积比较大,而且有时候出了问题也很难跟踪,所以有必要开发一套专门针对移动端开发的JavaScript库,使它具有灵活,小巧,功能完善的工具集和UI组件,帮助开发移动端应用的开发者快速工发并容易维护,所以具体需求有以下几个方面:
事件的支持
DOM2级的事件使对DOM元素的 *** 作起到了解耦作用,在程序开发的过程中,对程序对象之间的解耦的作用,在程序开发的过程中,对对象之间的解耦也是相当必要的,所以有必要做一个统一的接口,而事件是一个不错的选择,而且事件在MVC设计模式的实现中占有很重要的地位,他既可以使Model,view,controller之间分离解耦,又使他们之间存在内在联系。
插件机制
一个好的Javascript库,他应该有自己的灵活完善的插件机制,不仅可以为库的开发台提供方便,也应该为开发应用程序时提供方便,针对相同的功能开发插件,避免代码的多次开发。
页面管理
一个移动应用程序会有很多页面需要分级管理,这是由移动办公设备的特性决定的,面对多级与多个页面,需要一种机制来管理各个页面之间的关系才而已痛苦误会页面的加载时机与加载方法。
动画的功能
使用移动设置性能的提升与大量移动应用的出现,使用户对程序的选择更多。如果程序不能更炫更苦的表现来吸引用户,那他将难以进入市场,而动画就是其表现手段之一,所以有必要为开发者提供一套实现动画的方法,使开发者可以迅速开发能吸引用户的动画。
手势的支持
随着触摸移动设备的普及与苹果公司在它原生IOS应用程序中推出了手势 *** 作后,人们越来越喜欢这种交互方式了。为了适应这种潮流与提升程序的竞争力,在面向移动应用开发的JavaScript库中添加手势的支持是有必要的。
数据的通信
作为一个信息时候的应用程序,数据通信的功能是不可或缺的。虽然Ajax技术提供了数据通信的相应的接口,但是如果每一次的数据通信都要开发者去创建,调用相应的接口,会出现很重复的代码,而且效率也不高,所以有必要对Ajax数据通信接口进行封装。
数据的本地化
当应用程序与后台通信取得数据的时候,有些数据是需要保存在本地的,还有一些数据的状态,以及一些经过运算得到的数据也是需要保留在本地的。这就需要提供一种数据本地化的接口
UI组件
开发者在开发应用程序的时候,常常会遇到一个功能相同的控件在不现的应用程序程序中都会用到,为了提高应用程序的开发效率,缩短开发周期,有必要把一些常用的控件抽象出来形成组件,供开发者调用
屏幕的适配
随着移动设备的不断更新发展,设备屏幕的尺寸与分辨率越来越多样化,这便成了跨平台应用程序“一次开发,多处运行”的最大难题。所以有必要形成一_方案来解决这一问题。
总结
在这所有问题中,事件的扩展,插件机制,页面的管理,MVC设计模式的实现不仅是重点,也是难点,它们的实现具有以下价值:
事件在web开发中应用已经很广泛,不过它只有在相应的DOM元素上才有事件,而且MVC设计模式的实现需要事件的驱动,所以需要扩展DOM事件到普通对象上,使它们具有订阅发布消息功能,且与DOM事件有相同的接口。
插件机制需要代码的高度抽象化,它是UI组件实现的基础,它的实现提高了代码的重复使用。
页面的管理,它把应用程序按业务逻辑分解为以页面为单位进行管理,使程序的逻辑结构更加清晰,而且它为MVC框架中页面的调度实现提供了基础。
MVC设计模式的实现,即MVC框架的实现,对应用程序开发周期的缩短,开发成本的降低,应用程序后期的维护都会有很大的帮助。
我想通过本系列文章从头到尾构建一个完整的ASP NET MVC论坛应用程序 最终的目的是探讨和推动使用ASP NET MVC框架构建应用程序的最佳实践
简介
在本篇中 我想先从全局方面介绍一下论坛应用程序的总体目标 在本篇中 我将讨论一下避免代码坏味道的重要性 还将讨论如何利用软件设计原则和模式来帮助你编写适合未来改变的富有d性的代码 最后 我还将论证一下为什么我选择使用测试驱动开发方式构建本系列文章中的论坛应用程序
什么样的软件是好的软件
我不想仅仅为了构建论坛应用程序而任意构建此论坛应用程序 我的目标是尽可能构建最棒的论坛应用程序
这个目标立即引发这样一个问题 什么样的软件是好的软件?是什么导致一个应用程序比另一个应用程序更好一些或更差一些呢?在事先没有一个关于 好软件 的定义之前 我无法声明我构建了一个完美的论坛应用程序
因此 下面是我对于 好软件 的定义
好软件是设计得易于修改的软件
存在多种原因可能需要你改变软件
)你可能需要在一个现有软件上添加新的特征 )你可能需要修改一个现有软件中的错误 )你可能需要优化现有软件 )你可能需要改进现有软件的设计
一般说来 设计糟糕的软件是难于改变的 有些软件设计得如此糟糕 以致于每个人都害怕碰一碰它 我们大家应该都使用过设计得糟糕的软件 当软件不好时 你很希望它干脆走开 甚至如果有机会的话 你可能想从头开始重新编写这款软件
避免代码坏味道
Robert和Micah Martin把糟糕的软件部分描述为代码坏味道 下列代码坏味道意味着此软件的书写是相当糟糕的
)僵化性(Rigidity)—僵化的软件是这样的软件 当你在某个位置作一改动时即要求对系统作出相应的一系列的更改 )脆弱性(Fragility)—脆弱的软件是这样的软件 你在某个位置作一改动时即打断另外多处的正常运行 )不必要的复杂性—不必要的复杂软件是指过度设计的软件 其目的是为了处理任何可能的改变 )不必要的重复—不必要的重复软件中包含大量的重复性代码 )晦涩性—晦涩的软件是指难于理解的软件
注意上述这些代码味道在Micah和Robert Martin的著名《Agile Principles Patterns and Practices in C#》中得到充分的描述 在此 强烈建议读者读一下这本书 注意 上述这些代码味道都与所有的代码改变相关联 每一个这些代码味道都将妨碍代码的改变
软件设计原则
遵循良好的软件设计原则 将有助于编写软件易于适应未来更改的软件 软件设计原则有若干 也不尽相同 例如 Cunningham和Cunningham Wiki描述面向对象设计的 个原则 //c /cgi/wikiPrinciplesOfObjectOrientedDesign
其中提到的面向对象设计的前五个原则与Robert Martin及他的儿子Micah Martin编著的《Agile Principles Patterns and Practices in C#》中所主张的软件设计原则是一致的 此外 Robert Martin还在Object Mentor开辟的博客上讨论了这些原则 // objectmentor /resources/publishedArticles
此外 我还发现有另外两本书中也提供了有关软件设计原则的极其有用的信息 第一本是Eric Freeman Elisabeth Freeman Kathy Sierra Bert Bates编著的《Head First Design Patterns》 第二本是Brett McLaughlin Gary Pollice和David West编著的《Head First Object Oriented Analysis and Design》 尽管这些书所讨论的原则与Robert Martin的提法并不十分相同 但是它们却十分相近
lishixinzhi/Article/program/net/201311/14493
spring mvc 的工作流程:
1、用户发送请求至前端控制器DispatcherServlet。
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView。
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户。
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。
SpringMVC是一种web层的mvc框架,用于替代servlet(处理响应请求,获取表单参数,表单验证等)。
MVC即Model-View-Controller,将应用按照Model(模型)、View(视图)、Controller(控制)这样的方式分离。
视图(View):代表用户交互界面,对于Web应用来说,可以是HTML,也可能是jsp、XML和Applet等。
一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。
模型(Model):是业务的处理以及业务规则的制定。模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心。
MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,抽象与具体不能隔得太远,也不能太近。
MVC并没有提供模型的设计方法,而只是组织管理这些模型,以便于模型的重构和提高重用性。
控制(Controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。
划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。
spring-mvc 的启动流程
1、request 请求到达 dispatchServlet-> doService()->doDispatch() 开始处理请求
2、根据doDispatch() 再去调用getHandler() 目的是获取包含 处理器Handler和处理器拦截器 AdapterIntercepers 的处理器拦截链 HandlerExecutionChain
21 getHandler(>
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。
比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。
后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。
扩展资料:
MVC 编程模式:
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
1、Model(模型)表示应用程序核心(比如数据库记录列表)。
2、View(视图)显示数据(数据库记录)。
3、Controller(控制器)处理输入(写入数据库记录)
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制:
1、Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
2、View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
3、Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
框架内容:
MVC指MVC模式的某种框架,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。
1、视图
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和像XHTML,XML/XSL,WML等一些标识语言和Web services
MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户 *** 纵的方式。
2、模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。
例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
3、控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
常见框架Struts:
Struts是Apache软件基金下Jakarta项目的一部分。Struts框架的主要架构设计和开发者是Craig RMcClanahan。Struts 是Java Web MVC框架中不争的王者。经过长达九年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。
但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring MVC、Webwork2这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。但站在产品开发的角度而言,Struts仍然是最稳妥的选择。
Struts有一组相互协作的类(组件)、Servlet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。
根据上面对framework的描述,很容易理解为什么说Struts是一个web framework,而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。
Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。
在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件相结合。
参考资料:
百度百科-MVC框架
MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的 *** 作。
低耦合性
MVC的好处
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
高重用性和可适用性
随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(>
以上就是关于如何设计一个自己的前端MVC框架全部的内容,包括:如何设计一个自己的前端MVC框架、基于ASP.NET MVC框架开发Web论坛应用程序[1]、spring mvc 的工作流程是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)