我正在爲我的程序使用IoC容器unity。在依賴工廠之間傳遞數據對象
我有多個鏈接工廠。一個調用下一個來創建一個它需要填充屬性的對象。所有的工廠都使用相同的原始數據對象來構建它們各自的對象。原始數據對象描述瞭如何創建所有各種對象。目前,每個工廠都有一個Create方法,它接受一對參數來指定對象所代表的位置。
我的問題是如何將原始數據對象傳遞給每個工廠以便他們完成工作?
將對象注入到Create()方法中似乎比面向對象更程序化。但是,如果我將對象注入每個工廠的構造函數,那麼我將如何正確解析每個工廠。更不用說這些工廠需要能夠處理不同的原始數據對象。也許有更好的建築?
下面表示我有的結構類型,減去任何地方的原始對象。
class PhysicalObjectFactory
{
private readonly StructureAFactory _structureAFactory;
private readonly Parser _parser;
public PhysicalObjectFactory(StructureAFactory structureAFactory, Parser _parser)
{
_structureAFactory = structureAFactory;
this._parser = _parser;
}
public PhysicalObject CreatePhysicalObject()
{
RawDataObject rawDataObject = _parser.GetFromFile("foo.txt");
// do stuff
PhysicalObject physicalObject = new PhysicalObject();
physicalObject.StructureA = _structureAFactory.Create(num1, num2);
// do more stuff
return physicalObject;
}
}
class StructureAFactory
{
private readonly StructureBFactory _structureBFactory;
public StructureAFactory(StructureBFactory structureBFactory)
{
_structureBFactory = structureBFactory;
}
public StructureA Create(int a, int b)
{
// do stuff
StructureA structureA = new StructureA();
structureA.StructureB = _structureBFactory.Create(num76, num33);
// do more stuff
return structureA;
}
}
class StructureBFactory
{
public StructureBFactory(){}
public StructureB Create(int a, int b)
{
StructureB structureB = new StructureB();
// do stuff
return structureB;
}
}
這使現在更有意義。我沒有考慮到我的原始數據對象在設計時與運行時間方面的差異。我相信你最後一段的解決方案就是我需要的。我需要類似於中介模式的東西。提供原始數據對象的服務。我會做的。謝謝! – devinh64