coreパッケージ
MVCモデルを実現する各デザインパターンの要素(patternパッケージ下にあるクラス)を管理するためのクラス群を持つ。コード中で直接は扱わない。Facadeが各クラスインスタンスを持ち,Facadeのメソッド呼び出すことで各クラスのメソッドが呼び出される。
Controller
ICommandを実装したクラス(Command)群を管理する。
- Commandと,そのトリガとなるNotification名とのマッピングを持つ。
- 1つのNotification名にマップできるCommandは1つだけ。複数登録しようとした場合は後勝ち。
- 登録時に,ViewにexecuteCommand()を呼び出すObserverを登録する。
- executeCommand(:INotification)メソッドにて,引数のNotificationに対応するCommandがあればインスタンス化し,executeを呼び出す。
- CommandはexecuteCommand()内で初めてインスタンス化される。
- sendNotification()に対応してexecuteCommand()を呼び出すのはViewに登録されているObserverの役目。
Model
IProxyを実装したクラス(Proxy)群を管理する。
- Proxy名とProxyインスタンスのマッピングを持つ。
- 1つのProxy名にマップできるProxyインスタンスは1つだけ。複数登録しようとした場合は後勝ち。
- Facade経由でProxy名に対応するProxyインスタンスを取得可能。
View
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をマップ可能。


