PureMVC

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
PureMVC
Ілюстрація взаємодії частин фреймворку
Тип програмний каркас
Розробник Futurescale, Inc.
Стабільний випуск 1.6 (Sept 08, 2007)
Операційна система Багатоплатформна
Мова програмування ActionScript
Доступні мови ActionScript, C++, Perl, PHP, Python та інші
Ліцензія CC +Attribution
Вебсайт puremvc.org

PureMVC — програмний каркас для створення застосунків на основі усталеного шаблона проєктування модель-вид-контролер. Безплатний, з відкритим початковим кодом. Вперше був реалізований в ActionScript 3, надалі був портований для більшості платформ розробки програмного забезпечення та вебпрограмування.

Реалізація[ред. | ред. код]

Стандартна версія[ред. | ред. код]

Модель, Вид та Контролер представлені трьома шаблонами Одинаками (класи, для яких може бути створений тільки один екземпляр).

MVC кешує:

  • в Моделі — об'єкти Проксі (Proxies) для доступу до локальних або віддалених даних,
  • в Види — об'єкти Медіатори (Mediators) для доступу до представлень.

В Контролері зберігаються класи Команд (Commands), екземпляри яких створюються перед початком виконанням кожної окремої команди і знищуються після завершення виконання команди. Команди можуть взаємодіяти з проксі, посередники, а також виконувати запуск інших команд.

Медіатор надає можливість створювати або використовувати наявні компоненти інтерфейсу користувача. Медіатор описує поведінку своєї частини інтерфейсу, таким чином досягається можливість не перенасичувати елементи компонентів інтерфейсу. Медіатор має змогу безпосередньо керувати компонентом, компонент такої можливості не має, зв'язок між компонентом та медіатором здійснюється через Спостерігач (Observer).

Взаємодію між структурними елементами забезпечує Фасад, також Singleton, який надає єдиний інтерфейс для зв'язку у всьому додатку. Фасад в PureMVC не має нічого спільного з однойменним шаблоном проєктування.

PureMVC також вводить механізм публікації/підписки для обміну повідомленнями (сповіщеннями) між елементами PureMVC. Це дозволяє організувати асинхронний, керований подіями зв'язок між елементами системи, а також сприяє отриманню слабкого зв'язку між суб'єктами, оскільки абонент ніколи не повинен спиратись на безпосереднє знання про відправника повідомлення.

MultiCore версії[ред. | ред. код]

Цей варіант підтримує модульне програмування, що дозволяє використовувати незалежні програмні модулі, реалізовані в PureMVC та забезпечити взаємодію між ними. Ця версія використовує рамки Пул Одинаків (Multitons) замість Одинаків.

MultiCore версія була розроблена у зв'язку з необхідністю підтримки популярної технології модульного програмування, яке використовується в амбітних багатофункціональних інтернет-проєктах.

Порти[ред. | ред. код]

Мова Цілі Стандартна версія MultiCore версія
ActionScript 2 Flex 1.5, Flex 2, Flash 8, FlashLite [1] [Архівовано 30 грудня 2013 у Wayback Machine.]
ActionScript 3 Flex 3, Flex 4, Flash 9+, AIR (all versions). Original PureMVC reference implementations [2] [Архівовано 29 грудня 2013 у Wayback Machine.] [3] [Архівовано 6 червня 2014 у Wayback Machine.]
C++ Нитево-безпечний. Компілюється: MSVC 8.0/9.0/10.0, MinGW 3.4.5, GNU G++ 4.0, Embarcadero C++ 6.21 (MFC, WTL, wxWidgets, Qt...) [4] [Архівовано 29 грудня 2013 у Wayback Machine.]
C# .NET 1.0/2.0 Silverlight, Windows Mobile та Pocket PC. [5] [Архівовано 29 грудня 2013 у Wayback Machine.] [6] [Архівовано 6 червня 2014 у Wayback Machine.]
ColdFusion ColdFusion 8 [7] [Архівовано 29 грудня 2013 у Wayback Machine.]
Dart Google Dart [8] [Архівовано 29 грудня 2013 у Wayback Machine.]
Haxe JavaScript, Flash 8, Flash 9 та Neko VM. [9] [Архівовано 29 грудня 2013 у Wayback Machine.] [10] [Архівовано 6 червня 2014 у Wayback Machine.]
Java Java Mobile, Standard та Enterprise Editions (ME, SE, EE), JavaFX, сервлети, аплети, та GWT [11] [Архівовано 29 грудня 2013 у Wayback Machine.] [12] [Архівовано 6 червня 2014 у Wayback Machine.]
JavaScript Нейтральний до браузера. Нативний JavaScript MultiCore порт робить з усіма іншими фреймворками. (Попередні залежні портування від третіх постачальників засуджуються). [13] [Архівовано 29 грудня 2013 у Wayback Machine.]
Objective-C Apple iPhone та Mac [14] [Архівовано 29 грудня 2013 у Wayback Machine.]
Perl Perl 5 [15] [Архівовано 29 грудня 2013 у Wayback Machine.] [16] [Архівовано 6 червня 2014 у Wayback Machine.]
PHP PHP 5 [17] [Архівовано 29 грудня 2013 у Wayback Machine.] [18] [Архівовано 6 червня 2014 у Wayback Machine.]
Python Python 2.5 for wxPython, Google App Engine, Pyjamas [19] [20] [Архівовано 29 грудня 2013 у Wayback Machine.] [21] [Архівовано 6 червня 2014 у Wayback Machine.]
Ruby Ruby [22] [Архівовано 29 грудня 2013 у Wayback Machine.]
TypeScript TypeScript [23] [Архівовано 28 жовтня 2013 у Wayback Machine.] [24] [Архівовано 28 жовтня 2013 у Wayback Machine.]

Дивись також[ред. | ред. код]