我正在为我的程序使用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