最近在看puremvc。
一、认识PureMVC
1.1什么是MVC
MVC是Model-View-Controller的缩写,Model指数据模型,View指用户界面,Cotroller指控制器。使用MVC的目的是将M和V分离,从而使同一个程序可以有不同的表现形式。例如,一批统计数据你可以分别用柱状图,条形图或饼图来表示(这种数据对应多个表现形式,又叫做数据的多态呈现)。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。MVC是一个设计模式,它强制性的使应用程序的数据,表现和业务逻辑分开。采用MVC模式设计的应用程序都会被分成三个核心模块:模型,视图和控制器,它们各自处理自己的任务。
Model
模型表示企业数据和业务规则,负责生成,获取,保存和修改应用程序的数据内容。例如,它可以是一个数据生成器,也可以是一个操纵数据库的组件。通常情况下,在MVC的三个模块中,模型拥有最多的处理任务。被模型返回的数据应当是中立的,就是说模型与数据格式无关,这样一个模型才能为多个视图提供数据。由于应用模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
View
视图是用户看到并与之交互的界面,负责捕获用户输入和根据数据进行内容展示。
Controller
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
现在我们总结一下MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
PurMVC
用PureMVC创建健壮,易扩展,易维护的客户端程序
PureMVC结构
PureMVC框架的目标很明确,即把程序分为低耦合的三层:Model,View和Controller
在PureMVC实现的经典MVC元设计模式中,这三部分由三个单例模式类管理,分别是Model,View,Controller.三者合称为核心层核心角色。
PureMVC中还有另外一个单例模式类,Facade,Facade提供了与核心层通信的唯一接口,以简化开发复杂度。
Model与Proxy
Model保存对Proxy对象的引用,Proxy负责操作数据模型,与远程服务通信存取数据。这样保证了Model层的可移植性。
View与Mediator
View保存对Mediator对象的引用。由Mediator对象来操作具体的视图组件(View Component),包括:添加事件监听器,发送或接收Notification,直接改变视图组件的状态。
这样做实现了把视图和控制它的逻辑分离开来。
Controller与Command
Controller保存所有Command的映射。Command类是无状态的,只在需要时才被创建。
Command可以获取Proxy对象并与之交互,发送Notification,执行其它的Command。经常用于复杂的或系统范围的操作,如应用程序的“启动”和“关闭”。应用程序的业务逻辑应该在这里实现。
Facade 与Core
Facade类应用单例模式,它负责初始化核心层(Model,View和Controller),并能访问它们的Public方法。
Proxy,Mediator和Command就可以通过创建的Facade类来相互访问通信。
Observer与Notification
发送Notification可以触发相应的Observer.
Notification可以被用来触发Command的执行。
Facade保存了Command与Notification之间的映射,当Notification被发出时,对应的Command就会自动地由Controller执行。Command实现复杂的交互,降低view和Model之间的耦合性。
Mediator发送,声明,接收Notification
当用View注册Mediator时,Mediator的listNotifications方法会被调用,以数组形式返回该Mediator对象所关心的所有Notification.
之后,当系统其它角色发出同名的Notification时,关心这个通知的Mediator都会调用HandleNotification方法并将Notification以参数传递到方法。
Proxy发送,但不接收Notification
在很多场合下Proxy需要发送Notification,比如Proxy从远程服务接收到数据时,发送Notification告诉系统,或当Proxy的数据被更新时,发送Notification告诉系统。
如果让Proxy也侦听Notification会导致它和View层,Controller层的耦合度太高。
View和Controller必须监听Proxy发送的Notification,因为它们的职责是通过可视化的界面使用户能与Proxy持有的数据交互。
不过对View层和Controller层的改变不应该影响到Model层。
例如,一个后台管理程序和一个面向用户程序可能共用一个Model类,如果只是用例不同,那么View/Controller通过传递不同的参数就可以共用相同的Model类。
示例代码:http://puremvc-c.googlecode.com/svn/trunk
分享到:
相关推荐
如你下载后的存放的目录是D组:/下载,解压后将创建一个名为PureMVC_AS3_2_0_4的文件夹(注:其中的2_0_4是版本号) ; 打开PureMVC_AS3_2_0_4文件夹,您会发现里面有三个文件夹: asdoc :对应于API的文档,它的首页...
这是一个使用C#开发语言的基于PureMVC框架的Web登录Demo,是网上绝无仅有的实例。 本文以初学者的视角,详细地介绍PureMVC在ASP.NET的应用。 PureMVC不仅仅是Flex的MVC框架哦,而且它非常的小巧,还等什么呢,快来...
按照puremvc官方网站教程做的登陆实例,在flexBuilder3上运行过.绝对好用. 供大家学习参考.
PureMVC五子棋游戏源码,学习PureMVC
用PureMvc开发Air项目,完整工程实例。 学PureMvc的第一个完整例子
而PureMVC架构在MVC基础上通过引入Mediator+事件(通知)机制很好的解决了view(视图层)与controller(控制层之间的紧耦合问题)。 在大型项目中,MVC中的Controller主要就是负责协调View与Model,让两者之间尽量“解耦”...
这个是一个根据AS3(ActionScript 3) pureMVC而转换过来的lua pureMVC。所有的接口完全跟AS3版本一致。 若是想使用,可以直接查看网上的pureMVC 文档,我并未对任何一个函数改名或者更换参数位置。 注意,这个PureMVC...
PureMVC学习资料与案例PureMVC学习资料与案例PureMVC学习资料与案例PureMVC学习资料与案例
介绍了PureMVC框架结构以及PureMVC下消息发送机制,有助于更好的了解和学习PureMVC架构
pureMVC项目包 导入的包 pureMVC项目包pureMVC项目包
pureMVC框架 pureMVC源码 学习pureMVC的知识
flex PureMVC框架实例 flex PureMVC框架
适合Unity的pureMVC,做UI和逻辑分成。比较适合的工具
pureMVC框架dll文件,
puremvc 讲解puremvc的源码
pureMVC源代码,可以直接导入到Flex Builder 3运行。
puremvc .net 2.0 /vs2010 使用PUREMVC
as3 的 puremvc 最新版本2.0.4源码
cocoscreator使用puremvc
使用javascript PureMVC开发时的类库,只要在html页面导入这几个js文件就可以使用javascript PureMVC框架了