免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
staticファクトリメソッドを介して豆を作成すると、
Beanを作成するために、静的なファクトリメソッドを呼び出してオブジェクトを作成するプロセスは、静的メソッドをカプセル化されたクライアントがオブジェクトを必要とするとき、単にによって宣言するために、詳細には、オブジェクトを作成するために気にすることなく、静的メソッドを呼び出しますビーンは、静的メソッドを作成し、あなたはクラスが構成ファイルのBeanクラスの属性に工場を変更する方法を持っている指定する必要があり、同じ時間は、工場出荷時にmethod属性でファクトリメソッドの名前を指定します。最後に、この方法のための伝送パラメータは、要素を使用して
次のサンプルコード
//准备一个Car类
public Car{
private String brand;
public Car(String brand){
thsi.brand = brand;
}
public void setBrand(String brand){
this.brand = brand
}
}
//静态工厂类
public CarStaticFactory{
private static Map<String,Car> cars = new HashMap<String,Car>();
staitc{
cars.put("audi",new Car("audi"));
cars.put("ford",new Car("ford"));
}
public static Car getCar(String brand){
return cars.get(brand);
}
}
//xml文件中的配置
<bean id="car1" class="CarStaticFactory的全类名" factory-method="getCar">
<constructor-arg value="audi"></constructor-arg>
</bean>
Beanインスタンスは、ファクトリメソッドを呼び出すことによって作成された
別のオブジェクトインスタンスのメソッドでカプセル化されたオブジェクトの作成:インスタンスのファクトリメソッドを。クライアントがオブジェクトを要求する必要がある場合、単純に関心のオブジェクトを作成するプロセスに変更することなく、インスタンスメソッドを呼び出して
Beanインスタンスのファクトリメソッドによって作成された宣言する
ビーンで指定されたファクトリメソッド所有豆工場豆属性に
工場での-methodプロセスプラントの名前で指定された属性
コンストラクタ、引数要素法の送達方法を用いては、工場であります
コード例(上記Carクラスを使用して):
public InstanceCarFactory{
public Map<String,Car> cars =null;
public InstanceCarFactory() {
cars = new HashMap<String, Car>();
cars.put("audi", new Car("audi",400000));
cars.put("ford", new Car("ford",500000));
}
public Car getCar(String brand) {
return cars.get(brand);
}
}
//xml文件中的配置
<bean id="InstanceCarFactory" class="InstanceCarFactory的全类名"></bean>
<bean id="car2" factory-bean="InstanceCarFactory" factory-method="getCar">
<constructor-arg value="ford"></constructor-arg>
</bean>