top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
ラッパークラスの作り方にもデザインパターンが存在するような気がしました。特に SWTから それを感じます。
特にここのところ 、ラッパークラスの作成とかに携わることがあります。そこで気がついたのですが、ラッパークラスのデザインの仕方にも、微妙に特徴があるように感じます。いわばラッパークラス・デザインパターンとでも言うのでしょうか。(多分ラッパークラス・デザインパターンというのは私の造語でしょう) SWT、R/Oマッピング、TCP/IPのようなネットワークレイヤーなどに対するラッパークラスなど、ラッピングする対象が非オブジェクト指向のものである場合には、モデリングにラッパークラスならではの特徴が出てきます。
完全隠蔽型・ラッパークラス・デザインパターン : ひたすら隠蔽しまくる ラッパークラスによって下位層の都合が全く見えなくする設計です。これは一定のオブジェクト指向を習得していれば 誰にでも設計できます。
薄皮型・ラッパークラス・デザインパターン : 絶妙なバランスを取る 下位層の制約、速度的な制約や現実的な利用方法などとバランスを取りながら、絶妙に設計を行う。これは大変に難易度が高いです。そして こういう設計をできる人が 現時点では大変に少ないです。
薄皮型・ラッパークラス・デザインパターンを強く考えさせられるもののひとつが SWTです。SWTは 絶妙なバランスで設計が行われています。それまでの画面系ツールキットと比べると大変に前衛的な設計になっています。
メッセージループがユーザプログラミング側に存在する 生SWTで実装すると Displayというクラスからオブジェクトを取り出してメッセージループ処理を行うようになっています。なお、JFaceベースにおいて、また異なった実装が可能ですけれどもね。
継承を許さない びっくりしました。
SWTは薄皮型・ラッパークラス・デザインパターンによって実装されているので、あのように機敏に、そして普通に操作できるGUIが構築できるのでしょう。SWTをあのような設計にした上で、さらに上位層にあるラッパークラスであるJFaceではより高水準なデザインがなされています。
そうなのです。一方の JFaceにおいては完全隠蔽型・ラッパークラス・デザインパターンを感じます。JFace層 (RCP層とでも言うのかしら?)においては、いまどきのデザインパターンがふんだんに活用されています。JFaceはデザインパターンの技のデパートのような作りになっています。デザインパターンの学習という目的においては、JFaceやRCPは有益であるように考えます。
このように 薄皮型・ラッパークラス・デザインパターンと 完全隠蔽型・ラッパークラス・デザインパターンとを使い分けて設計をするのが、ラッパークラスの設計に最適なのでは無いかと考えました。ラッパークラスって奥が深いですね…。
関連する日記
SourceForge.jpのCVSを初めて利用しました。下記のページを頼りに接続に成功しました。
このページがなかったら私には設定ができませんでした。有益なページに感謝します。