2

具体的なファクトリによって返されるオブジェクトのプロパティを設定する方法について疑問に思っていました。ファクトリは、プロパティ A と B を持つ objectA を返すことができますが、プロパティ X、Y、Z を持つ objectB を返すこともできます。

クライアントは objectA と objectB が継承するインターフェイスしか知らないため、どのオブジェクトを扱っているかはわかりません。それで、私の質問は、これらのプロパティを設定するオブジェクト指向の方法は何ですか? classA と classB のすべてのプロパティを含む一種の設定クラスを導入する必要がありますか? しかし、これはオブジェクト指向ではありません。新しいクラスがある場合、設定クラスも更新する必要があるためです...

あなたが私の質問を理解し、私を助けてくれることを願っています:)

PS: それが問題なら、私は C# で作業しています

4

2 に答える 2

1

設定するプロパティを知っているビジターを使用して、取得した具象クラス(工場内)に割り当てることができます。これで、この訪問者は目的のプロパティを抽象的な方法で設定できます。

class Factory {

..
obj = new ConcreteObject();
obj.accept(new ConcreteObjectVisitor());
}

class ConcreteObject{

accept(Visitor visitor){
 visitor.visit(this);
}

}

class ConcreteObjectVisitor implements Visitor {

visit(ConcretTypeInterface param){

obj = (ConcretType)param;
param.setA()
param.setB()
param.setC()
}
}
于 2011-09-24T08:11:59.040 に答える