PureMVC


PureMVC is a framework for creating applications based upon the well-established model–view–controller design pattern. The free, open source framework was originally implemented in the ActionScript 3 language for use with Adobe Flex, Flash and AIR, and it has since been ported to nearly all the major web development platforms.

Implementations

Standard version

The Model, View and Controller application tiers are represented by three Singletons.
The MVC Singletons maintain named caches of Proxies, Mediators and Commands, respectively. The Facade, also a Singleton, provides a single interface for communications throughout the application. These four Singletons are referred to as the Core Actors.
All actors discover and communicate with each other via the Facade, rather than work directly with Model, View and Controller.
PureMVC also introduces a Publish/subscribe-style Observer notification scheme. This allows asynchronous, event-driven communications between the actors of the system, and also promotes a loose coupling between those actors, since the subscriber never needs to have direct knowledge of the publisher.
The Standard Version Reference Implementation is written in ActionScript 3.

MultiCore version

This variation supports modular programming, allowing the use of independent program modules each with their own independent PureMVC 'Core'. A Core is a set of the four main actors used in the Standard framework. This version of the framework uses Multitons instead of Singletons. Rather than storing a single instance of the class, a Multiton stores a map of instances. Each Core is referenced by an associated Multiton Key.
The MultiCore Version of the framework was developed due to the widespread need for modular support in a world of ever-more ambitious Rich Internet Applications which must load and unload large pieces of functionality at runtime. For instance a PDA application might need to dynamically load and unload modules for managing task list, calendar, email, contacts, and files. The "multicore" version facilitates unit testing.
The MultiCore Version Reference Implementation is written in ActionScript 3.

Ports

There are several active PureMVC ports—implementations for various programming languages, each contributed and supported by PureMVC community members. Each port, in turn supports one or more target development platforms, which cover most major mobile, browser, desktop and server environments.
LanguageTargetsStandard versionMultiCore version
ActionScript 2Flex 1.5, Flash 8, FlashLite
ActionScript 3Flex 2, Flex 3, Flex 4, Flash 9+, AIR. Original PureMVC reference implementations
C++Thread-safe. Compile with: MSVC 8.0/9.0/10.0, MinGW 3.4.5, GNU G++ 4.0, Embarcadero C++ 6.21
C#.NET Core, Windows 10, Xamarin, Xbox, Kinect, HoloLens, Surface Neo
ColdFusionColdFusion 8
DartGoogle Dart
GoGoogle Go
HaxeJavaScript, Flash 8, Flash 9, Neko VM, Hashlink VM, PHP, Lua, Python, Actionscript 3, C++, Java, C#, NodeJS
JavaJava Mobile, Standard and Enterprise Editions, JavaFX, Servlets, Applets, and GWT
JavaScriptBrowser neutral. Native JavaScript MultiCore port works with all other frameworks..
KotlinAndroid
Objective-CApple iPhone and Mac
PerlPerl 5
PHPPHP 5
PythonPython 2.5 for wxPython, Google App Engine, Pyjs
RubyRuby
SwiftSwift
TypeScriptTypeScript