私の質問は少し長いです。私は抽象的なファクトリパターンを学んでいます。
抽象ファクトリの抽象クラスがあります。具体的な工場に必要な「資源」を共有したい。したがって、AbstractFactory内の変数を静的として作成するだけです。
public class AbstractFactory{
private static Vector vector = new Vector();
protected Vector void getVector() {
return vector;
}
protected void setVector(Vector v){
this.vector = v;
}
public abstract Circle createCircle();
}
そして、そのサブクラスは次のようになります。
public class ConcreteFactory extends AbstractFactory{
public ConcreteFactory(){
super();
}
public Circle createCircle(){
Circle circle = new Circle();
getVector().add(circle);
return circle;
}
}
ただし、静的変数は定数に使用されることが多いため、先生は静的オブジェクトインスタンスを使用すべきではないと言いました。
したがって、Vectorには静的変数の代わりにインスタンス変数instanceを使用 し、具象ファクトリをインスタンス化するときに外部からベクトルを渡します。
したがって、私のクラスの新しいデザインは次のようになります。
public class AbstractFactory{
private Vector vector;
protected Vector void getVector() {
return vector;
}
protected void setVector(Vector v){
this.vector = v;
}
public abstract Circle createCircle();
}
public class ConcreteFactory extends AbstractFactory{
public ConcreteFactory(Vector v){
super();
setVector(v);
}
public Circle createCircle(){
Circle circle = new Circle();
getVector().add(circle);
return circle;
}
}
**
私の質問は:オブジェクトを共有するために静的変数を使用すべきではないのはなぜですか?
**
具体的なファクトリのインスタンスを作成するときに、Vectorを渡さなくても、具体的なファクトリ間でリソースを共有する方が簡単です。