このような実装を行うには、Abstract Factoryパターンを使うのが良いとデザインパターンの本には書かれていますが、AWTやSWTのサンプルコードを見る限り、ファクトリーメソッドを呼び出して、オブジェクトを取得する様子が見受けられません。また、Abstract Factoryパターンの有用性について知りたいのですが、これが実際に使われているjavaのライブラリがあれば、教えてください。
AWTについては、実際のプラットフォーム依存の処理する部分は JVM にあります。JVM はプラットフォームごとに違うものをインストールしますよね。
SWTについては、SWTのネイティブライブラリというものを各プラットフォーム別にインストールする必要があり、ここにプラットフォーム依存の処理があります。
つまり、プラットフォーム依存のコードがないのは、そういうコードを書かなくてもよいよう JVM およびライブラリ側で考慮しているから、という結論になります。
Abstract Factoryパターンについてのみですが、DOM のオブジェクト生成時などに使われています。
http://www.hellohiro.com/xmldom.htm
システムプロパティの変更等により、実際に使用される実装が切り替わるようになっています。
DOMみたいなテキスト処理をするライブラリはPure Javaで書いた
1つの実装さえあれば、それで事足りるような気がしたんですが、
実際には複数の実装があるのですね。
http://www.atmarkit.co.jp/fxml/rensai/xmljava01/xmljava03.html
そこで、Abstract Factoryパターンを使う、と。なるほど。
ありがとうございました。
ありがとうございます。納得しました。
質問後、再考してみたのですが、AWTやSWTにAbstract Factoryパターンを
適用する必要はないと思いました。実装を切り替える必要がないのですから。
このパターンを適用するなら、swingになろうかと思います。
そう思って、サンプルコードを見ると、そんな感じになってました。