(我在我的例子中使用了C#,但这个问题并不是特别关于C#。)
我们有工厂为多个接口创建对象,每个接口一个工厂。
假设我们有一个IPrinting
来为ScanningFactory
创建一个实现IScanning
和IPrinting
的对象。我们有实现IScanning
的具体打印机和实现ScanningFactory
的具体扫描程序,工厂决定选择哪种实现。
在public static IScanning Build()
{
...
return new CanonXYZ2000();
}
我有:
PrintingFactory
我在main
中有相似的代码,在scanner = ScanningFactory.Build();
printer = PrintingFactory.Build();
我有:
public class CanonXYZ2001MultiPurpose: IPrinting, IScanning {...}
现在,如果我想实例化一个实现两个接口的对象会发生什么?
{{1}}
我希望两个工厂都返回相同的对象。我该怎么做呢?
答案 0 :(得分:0)
如果我理解正确,你问是否可以通过ScanningFactory和PrintingFactory创建CanonXYZ2001MultiPurpose?
在这种情况下,两个工厂都可以返回CanonXYZ2001MultiPurpose的实例,没有任何问题,因为这个类实现了两个接口:
扫描工厂代码:
public static IScanning Build()
{
...
return new CanonXYZ2001MultiPurpose ();
}
打印工厂代码:
public static IPrinting Build()
{
...
return new CanonXYZ2001MultiPurpose ();
}
这两个变量现在都包含CanonXYZ2001MultiPurpose的实例:
var scanner = ScanningFactory.Build();
var printer = PrintingFactory.Build();