PureMVCとは?
PureMVC.org(http://www.puremvc.org/)が提唱するFlexのフレームワークです。
これまでFlexのフレームワークといえば、Cairngormがメインでした(少なくとも私の中では)。
しかし、CairngormはCommandクラス、Eventクラスが無数に増える上、ひとつのイベントを追加しただけで、
Command、Event、Delegateなど複数のクラスができるので、かえって面倒になっていました。
このあたりの欠点を見直されたものが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クラスはアプリケーションとして振舞わなければならない処理を記述したものになります。
また、このクラスの中で下記、ViewのMXMLコンポーネントとそのMXMLが発生させるイベントとの関連付けをFacadeクラスに登録と、
このアプリケーション内で使用するModel群のクラスであるProxyクラスをFacadeクラスに登録しています。
2.Model群
・ Proxyクラス
実際にビジネスロジックが書かれたクラスです。
・ ValueObject(VO)クラス
データオブジェクトクラスです。
Model群に該当するかどうかはともかく、前述のView群のMediatorクラスとProxyクラスとのデータのやりとりを
ValueObjectクラスを用いて行っているため、このModel群に該当するだろうということでここにいます。
但し、このValueObjectを用いてMXMLファイルのデータ表現(データバインディング)を行っていますので、
Model群とView群にまたがっているといえるかもしれません。
3.View群
PureMVCの中ではViewにあたるものは
ViewコンポーネントであるMXMLとMediatorクラスになります。
・ MXMLファイル
これについてはもはや説明は不要ですね。
Flexの画面表現をするためのファイルです。
またこのMXMLの中に、その画面表現の中でのイベントを<Metadata>タグを用いて、表現します。
このあたりのサンプルソースは後述します。
・ Mediatorクラス
MXMLにバインドさせるデータを管理するクラスです。
また、MXMLの<Metadata>タグにて記述されたイベントを最初にハンドルするのはこの
Mediatorクラスです。
なぜ、Mediatorクラスがハンドルするのか?
その答えは前述のController群のCommandクラスにあります。
このCommandクラスでMXMLコンポーネントに対するMediatorの関連付けを行っています。
イベントをハンドルした(受け取った)このクラスは以下のModel群に所属するProxyクラスのメソッドを呼び出しています。