今回はFactoryパターン編。別名SimpleFactoryとも言われています。GoFではFactoryMethodパターンが紹介されていますが、ここではシンプルなFactoryパターンを紹介します。(FactoryMethodパターンは次回のエントリで紹介します)というか、DIコンテナベースの話になっているので、DIコンテナ上でのFactoryパターンの使い方の説明になっています。事例からいつものごとく、ダイちゃんのところのサンプルを改編!やはり今回もDIコンテナを前提に考えます。現状のBusinessLogicは、MySQLとPostgreSQL用にそれぞれ別々のコンポーネントを用意して使うようにdiconファイルに定義されています。これはこれで正解だと思います。今回は一つのBusinessLogicで実行時に必要に応じてMySQLとPostgreSQLの両方に対応するにはどうたらよいかを考えてみます。BusinessLogicクラス単体だけを見た場合、Conveterはdiconファイル上で静的に決定されています。これはシステムに対する要件が静的に決まるのであればFactoryは必要ありません。必要なConveterをDIするだけでOKです。実行時にConverterを選ばないといけない場合(たとえば、ユーザがUI上から生成するDBMSの種類を変更したなど)は、dicon上で静的にマッピングしていたのでは不可能です。converter.convert(table);System.out.println(sql);}}で、MySQLとPostgreSQLが実行時に変化する場合のロジックを考えてみましょう。doBusinessメソッドの引数でConveterのモードを指定できるようにしましょう。することで実行時指定できるようにします。省略}}次にそのConverterのモードに応じたConverterをSeasar2から取得するFactoryクラスを作りましょう。