GraphのGUIパターン

去年だったか、RESTfulBuriエディタをFlex2.0で作っていました。実はそのまま放置してます。このまま捨てるのは勿体ないので、OSSで公開する予定です。とりあえず、Flex3.0とAir1.1には対応させました。公開時期は、私に暇な時間と気力が出来たらです。(気力はアルコール・インジェクションで増えるので、早く使いたい人は注入してくださいね)

RESTfulBuriエディタは、Flexで初めて作ったアプリだったのです。Graphライブラリも自作しましたが、GUIのパターンとして、MVCを分けないで全部持ちのコンポーネントにしました。開発効率は高いのですが、同じモデルを別の観点から表示したいような事が実現できませんでした。まぁ、RESTfulBuriエディタでは、そういう要件は無かったので問題はありませんでした。

いま、新しくワークフローエディタを作っています。一つのモデルを複数のビューで表示する要件があるので、GraphライブラリのGUIパターンを変更しました。M-VC-Visualパターンとでも言えば良いのかな。M(モデル)はEventDispatcherを継承して[Bindable]を指定したPOJOです。VCはCanvasを継承したコンポーネントでVisualをaddChild()します。VisualはMXMLで作る任意のビジュアル・コンポーネントです。VCとVisualの生成はFactory Methodパターンにしたので、Graph表示コンポーネントの種類ごとに変更可能です。

開発初期はVCとVisualは一緒のコンポーネントだったのですが、M-VCの依存性による再描画の制御と、画面に表示する内容(Visual)が混在するとソースコードの見通しが悪くなったので、分ける事にしました。その結果として、M-VCは同じで、Visualだけ異なるというGraph表示が実現できるようになり、それで要件を満たせる画面もありました。

とりあえず、FlexでのGraphのGUIパターンとしては、M-VC-Visualが巧く行くかなと思っています。