Factory クラスはDriverManager.getConnection("...conn...")
. それらはクラスのクラスメソッドです
さて、彼らはのようなノーマルクラスとどう違うのですか?java.lang.util
通常のクラスとは、そのインスタンスが次のように作成されるということです。
Date d=new Date();
では、上記のファクトリ クラス (日付クラス) と比較して、ファクトリ クラスとは何ですか?
これらは「通常の」クラスですが、Factory メソッドのパターンに従います
factory パターンは次の目的で使用されます。
- インスタンス化ロジックをクライアントに公開せずにオブジェクトを作成します。
- 共通インターフェースを介して新しく作成されたオブジェクトを参照する
から: http://www.oodesign.com/factory-pattern.html
Javaでそれを行う方法の例を次に示します
package designPatterns.creational.factory;
public class CarFactory {
public static Car buildCar(CarType model) {
Car car = null;
switch (model) {
case SMALL:
car = new SmallCar();
break;
case SEDAN:
car = new SedanCar();
break;
case LUXURY:
car = new LuxuryCar();
break;
default:
// throw some exception
break;
}
return car;
}
}
完全な例: http://howtodoinjava.com/2012/10/23/implementing-factory-design-pattern-in-java/
あなたが話すファクトリメソッドはDesign Patternと呼ばれます。ファクトリ メソッドは、コンストラクターのハードコーディングを防ぐ作成パターンであり、おそらく最も一般的なオブジェクト指向デザイン パターンの 1 つです。ここで重要なことは、Factory パターンはオブジェクトを作成するためのインターフェースを設計するということです。重複するコードの量を減らすことで、 DRY 原則(Don't Repeat Yourself)を促進します。
コードを移植可能にする必要がある場合は、アプリケーションでコンストラクター呼び出しをハードコーディングしないようにする必要があります。インスタンス化するクラスをサブクラスに決定させることが最善の場合もあります。
Factory で作成されたオブジェクトとそれなしで作成されたオブジェクトの違いを尋ねましたか? どちらもまだオブジェクトであり、バックグラウンドでファクトリ メソッドを呼び出しているクラスがオブジェクトを作成し、それを返します。一部のオブジェクトは非常に複雑であるため、定義済みのインターフェイスを使用してオブジェクトを作成する方が理にかなっています。最後に、オブジェクトの作成に関する情報をユーザーに公開してはならない場合があります。