PureMVCとは?

 

PureMVC.org(http://www.puremvc.org/)が提唱するFlexのフレームワークです。

これまでFlexのフレームワークといえば、Cairngormがメインでした(少なくとも私の中では)。

しかし、CairngormCommandクラス、Eventクラスが無数に増える上、ひとつのイベントを追加しただけで、

CommandEventDelegateなど複数のクラスができるので、かえって面倒になっていました。

このあたりの欠点を見直されたものがPureMVCであるといえるでしょう。

 

長くなりますので、興味のある方は下へどうぞ。

 

MVCともあるとおり、PureMVCは設計方法のMVCモデルを基本としています。

0.スタートアップファイル

PureMVC、というよりはすべての基本となるMXMLまたは、

Spriteクラスを継承したActionScriptファイルが必要になります。

一番最初にインスタンス化されるクラスと言い換えてもいいでしょう。

これについては次回サンプルで取り上げてます。

1.Controller

PureMVCの中ではControllerにあたるものは

Facadeクラス、Commandクラスになります。

     Façadeクラス

イベントが起きた際にどのCommand(あるいはProxy)を呼び出すかを関連付けさせるためのクラスです。

CairngormではFrontContrllerと呼ばれていました。

このクラスは静的に管理されるため1アプリケーションにつき(1SWFにつき?)必ずひとつです。

     Commandクラス

Facadeクラスで関連付けされたイベントに対するハンドルクラスがCommandクラスの役割です。

このあたり、Cairngormと変化はありませんね。

但し、CairngormではCommandクラスがイベントごと(クリックは1イベントなのでボタンのクリックごとにイベントがあった)に

作成されるわけではなく、このCommandクラスはアプリケーションとして振舞わなければならない処理を記述したものになります。

また、このクラスの中で下記、ViewMXMLコンポーネントとそのMXMLが発生させるイベントとの関連付けをFacadeクラスに登録と、

このアプリケーション内で使用するModel群のクラスであるProxyクラスをFacadeクラスに登録しています。

 

2.Model

     Proxyクラス

  実際にビジネスロジックが書かれたクラスです。

     ValueObjectVO)クラス

データオブジェクトクラスです。

Model群に該当するかどうかはともかく、前述のView群のMediatorクラスとProxyクラスとのデータのやりとりを

ValueObjectクラスを用いて行っているため、このModel群に該当するだろうということでここにいます。

但し、このValueObjectを用いてMXMLファイルのデータ表現(データバインディング)を行っていますので、

Model群とView群にまたがっているといえるかもしれません。

 

3.View

PureMVCの中ではViewにあたるものは

ViewコンポーネントであるMXMLMediatorクラスになります。

     MXMLファイル

これについてはもはや説明は不要ですね。

Flexの画面表現をするためのファイルです。

またこのMXMLの中に、その画面表現の中でのイベントを<Metadata>タグを用いて、表現します。

このあたりのサンプルソースは後述します。

     Mediatorクラス

MXMLにバインドさせるデータを管理するクラスです。

また、MXML<Metadata>タグにて記述されたイベントを最初にハンドルするのはこの

Mediatorクラスです。

なぜ、Mediatorクラスがハンドルするのか?

その答えは前述のController群のCommandクラスにあります。

このCommandクラスでMXMLコンポーネントに対するMediatorの関連付けを行っています。

イベントをハンドルした(受け取った)このクラスは以下のModel群に所属するProxyクラスのメソッドを呼び出しています

 

 

 

次回、サンプルを見てみましょう