Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • PHP

  • Golang

  • Python

  • Javascript

    • PureMVC

      • PureMVC(JS版)源码解析:认识PureMVC
        • PureMVC(JS版)源码解析01:观察者模式解析
        • PureMVC(JS版)源码解析02:Notification类
        • PureMVC(JS版)源码解析03:Observer类
        • PureMVC(JS版)源码解析04:Notifier类
        • PureMVC(JS版)源码解析05:SimpleCommand类
        • PureMVC(JS版)源码解析06:MacroCommand类
        • PureMVC(JS版)源码解析07:Mediator类
        • PureMVC(JS版)源码解析08:Proxy类
        • PureMVC(JS版)源码解析09:View类
        • PureMVC(JS版)源码解析10:Controller类
        • PureMVC(JS版)源码解析11:Model类
        • PureMVC(JS版)源码解析12:Facade类
        • PureMVC(JS版)源码解析:总结
      • 从一个基础Javascript面试题谈起
      • Javascript垃圾回收机制
      • Javascript实现双向数据绑定
      • 浏览器渲染网页过程
      • 浏览器资源缓存机制总结
    • 其他语言

    • 编程语言
    • Javascript
    • PureMVC
    Ravior
    2013-09-30
    目录

    PureMVC(JS版)源码解析:认识PureMVC

    PureMVC

    在日常开发过程中,我们都会接触到MVC框架,今天给大家分享一个我在日常游戏开发(cocos2d-js)中使用的一款好用的MVC框架 PureMVC。

    • pureMVC的官网:http://www.puremvc.org (opens new window)
    • pureMVC的Git地址:https://github.com/PureMVC/puremvc-js-multicore-framework/ (opens new window)

    pureMVC是一个轻型的、基于观察者模式设计的MVC框架,为全面了解这个框架,学习其中的编程思想,从今天开始,我将从源码层面给大家解剖这款MVC框架。

    我们首先从Github上面把pureMVC源码下载下来,可以看到如下目录:

    PureMVC

    PureMVC是开源框架,在src目录下,我们可以看到这款框架的源代码。 下面,简单说一下这个mvc框架:

    PureMVC框架的目标很明确,即把程序分为低耦合的三层:Model、View和Controller。

    在PureMVC实现的经典MVC设计模式中,这三部分由三个单例模式类管理,分别是Model、View和Controller,三者合称为核心层或核心角色。

    PureMVC中还有另外一个单例模式类Facade,Facade提供了与核心层(即Model,View和Controller)通信的唯一接口,以简化开发复杂度。

    # Model与Proxy

    Model保存了对Proxy对象的引用,Proxy负责操作数据模型,与服务器端进行通信存取数据

    # View与Mediator

    View保存了对Mediator对象的引用。由Mediator对象来操作具体的视图组件(View Component),包括:添加事件监听器,发送或接收Notification,直接改变视图组件(View Component)的状态。这样做实现了把视图和控制它的逻辑分离开来。

    # Controller与Command

    Controller保存所有Command的映射。Command类是无状态的,只在需要时才被创建。

    # Facede与Core

    Facade类应用单例模式,它负责初始化核心层(Model\View\Controller),并能访问他们的Public方法。

    在实际的应用中,你只需要继承Facade类创建一个具体的Facade类就可以实现整个MVC模式,并不需要在代码中导入编写Model\View\Controller类。

    Proxy\Mediator\Command就可以通过创建的Facade类来相互访问通信。

    # 主要类说明

    # Notification

    Notification可以被用来触发Command的执行, Facade保存了Command与Notification之间的映射。当Notification被发出时,对应的Command就会自动地由Controller执行。

    # Mediator

    Mediator发送、声明、接收Notification, 当用View注册Mediator时,Mediator的listNotifications方法会被调用,以数组形式返回该Mediator对象所关心的所有Notification之后,当系统其它角色发出同名的Notification时,关心这个Notification的Mediator都会调用handleNotification方法将Notification以参数传递到方法。

    # Proxy

    Proxy发送,但不接收Notification, 在很多场合下,Proxy需要发送Notification,比如:Proxy从远程服务器接收到数据时,发送Notification告诉系统;或当Proxy的数据被更新时,发送Notification告诉系统。

    # Facade

    MVC设计模式的核心元素在PureMVC中体现为Model类、View类和Controller类。为了简化程序开发,PureMVC应用了Facade模式。 Facade是Model\View\Controller三者的"经纪人"。实际编写代码时你并不用导入这三者的类文件,也不用直接使用它们。Facade类已经在构造方法中包含了对核心MVC三者单例的构造。 一般地,实际的应用程序都有一个Facade子类,这个Facade类对象负责初始化Controller,建立Command与Notification之间的映射,并执行一个Command注册所有的Model和View。

    # Command

    Command对象是无状态的;只有在需要的时候(Controller收到相应的Notification)才会被创建,并且被执行(调用execute方法)之后就会不给删除。

    SimpleCommand只有一个execute方法,execute方法接收一个nofitication实例作为参数,实际应用中,你只需要重写这个方法就行。 MacroCommand让你可以顺序执行多个Command,每个执行都会创建一个Command对象并传参一个队源Notification的引用。 MacroCommand在构造方法调用自身的initalizeMacroCommand方法,实际应用中,你需重写这个方法,调用addSubCommand添加子Command.你可以任意组合SimpleCommand和MacroCommand成为一个新的Command

    上面只是关于PureMVC的一些综述性知识点。如果想深入学习可以仔细研读官方文档: 《pureMVC最佳实践》 (opens new window)


    参考文档

    其中关于pureMVC设计模式的讨论也有几篇博客值得研读:

    • PureMVC(AS3)剖析:开篇 (opens new window)
    • PureMVC(AS3)剖析:实例 (opens new window)
    • PureMVC(AS3)剖析:吐槽 (opens new window)
    • PureMVC(AS3)剖析:设计模式(一) (opens new window)
    • PureMVC(AS3)剖析:设计模式(二) (opens new window)
    #PureMVC
    上次更新: 2022/12/01, 11:09:34
    Python项目Docker打包
    PureMVC(JS版)源码解析01:观察者模式解析

    ← Python项目Docker打包 PureMVC(JS版)源码解析01:观察者模式解析→

    最近更新
    01
    常用游戏反外挂技术总结
    11-27
    02
    Golang开发实践万字总结
    11-11
    03
    Redis万字总结
    10-30
    更多文章>
    Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式