javaのAWTやSWTがどのような実装によってマルチプラットフォームを実現しているのか教えてください。


このような実装を行うには、Abstract Factoryパターンを使うのが良いとデザインパターンの本には書かれていますが、AWTやSWTのサンプルコードを見る限り、ファクトリーメソッドを呼び出して、オブジェクトを取得する様子が見受けられません。また、Abstract Factoryパターンの有用性について知りたいのですが、これが実際に使われているjavaのライブラリがあれば、教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2006/09/21 23:06:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:ksh No.1

回答回数315ベストアンサー獲得回数9

ポイント35pt

AWTについては、実際のプラットフォーム依存の処理する部分は JVM にあります。JVM はプラットフォームごとに違うものをインストールしますよね。

SWTについては、SWTのネイティブライブラリというものを各プラットフォーム別にインストールする必要があり、ここにプラットフォーム依存の処理があります。

つまり、プラットフォーム依存のコードがないのは、そういうコードを書かなくてもよいよう JVM およびライブラリ側で考慮しているから、という結論になります。

http://d.hatena.ne.jp/ksh/

id:witt

ありがとうございます。納得しました。

質問後、再考してみたのですが、AWTやSWTにAbstract Factoryパターンを

適用する必要はないと思いました。実装を切り替える必要がないのですから。

このパターンを適用するなら、swingになろうかと思います。

そう思って、サンプルコードを見ると、そんな感じになってました。

2006/09/17 00:20:26
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント35pt

Abstract Factoryパターンについてのみですが、DOM のオブジェクト生成時などに使われています。

http://www.hellohiro.com/xmldom.htm

システムプロパティの変更等により、実際に使用される実装が切り替わるようになっています。

id:witt

DOMみたいなテキスト処理をするライブラリはPure Javaで書いた

1つの実装さえあれば、それで事足りるような気がしたんですが、

実際には複数の実装があるのですね。

http://www.atmarkit.co.jp/fxml/rensai/xmljava01/xmljava03.html

そこで、Abstract Factoryパターンを使う、と。なるほど。

ありがとうございました。

2006/09/17 00:16:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません