Flex3/PureMVC/core

Last-modified: 2010-08-15 (日) 22:57:22

coreパッケージ

MVCモデルを実現する各デザインパターンの要素(patternパッケージ下にあるクラス)を管理するためのクラス群を持つ。コード中で直接は扱わない。Facadeが各クラスインスタンスを持ち,Facadeのメソッド呼び出すことで各クラスのメソッドが呼び出される。

Controller

PureMVCController.png

ICommandを実装したクラス(Command)群を管理する。

  • Commandと,そのトリガとなるNotification名とのマッピングを持つ。
    • 1つのNotification名にマップできるCommandは1つだけ。複数登録しようとした場合は後勝ち。
    • 登録時に,ViewにexecuteCommand()を呼び出すObserverを登録する。
  • executeCommand(:INotification)メソッドにて,引数のNotificationに対応するCommandがあればインスタンス化し,executeを呼び出す。
    • CommandはexecuteCommand()内で初めてインスタンス化される。
    • sendNotification()に対応してexecuteCommand()を呼び出すのはViewに登録されているObserverの役目。

Model

PureMVCModel.png

IProxyを実装したクラス(Proxy)群を管理する。

  • Proxy名とProxyインスタンスのマッピングを持つ。
    • 1つのProxy名にマップできるProxyインスタンスは1つだけ。複数登録しようとした場合は後勝ち。
    • Facade経由でProxy名に対応するProxyインスタンスを取得可能。

View

PureMVCView.png

IMediatorを実装したクラス(Mediator)群と,Observerを管理する。

  • Mediator名とMediatorインスタンスのマッピングを持つ。
    • 1つのMediator名にマップできるMediatorインスタンスは1つだけ。複数登録しようとした場合は先勝ち(Command,Proxyと異なる)。
    • Mediatorインスタンス登録時に,Mediator#listNotificationInterests()の戻り値(Array)の要素1つごとにMediator#handleNotification()を呼び出すObserverを1つ登録する。
    • Facade経由でMediator名に対応するMediatorインスタンスを取得可能。
  • Notification名とObserverのマッピングを持つ。
    • 1つのNotification名に複数のObserverをマップ可能。